2016-10-18 5 views
-2

Я застрял на части вопроса. Мне нужно удалить из списка1 все экземпляры «числа». Так что давайте говорить песни1 есть (1,2,3) и Num = 2. В списке я бы вернуться бы (1,3)удаление номера из списка

def remove(list1,num) 

    list1=list1 
    num = num 

Это то, что дано. До сих пор у меня есть это:

def remove(list1,num) 

list1=list1 

num=num 

if num in list1: 

Это где я застрял, потому что я не знаю, как сказать, в кодировке «удалить Num из списка» Я не разрешается использовать .remove либо.

Поблагодарили бы за помощь.

+1

Вы можете использовать список для этого? 'new_list = [i для i в списке1, если i! = num]' –

+0

@DavidZemens Я печатал это решение, но вы поднялись первым, так что вперед. – MooingRawr

+0

Поскольку это циклический вопрос, я полагаю, вы должны сделать что-то, где вы создадите новый список, а затем перейдете к исходному, добавляя каждый элемент в новый список, если он не равен 'num' –

ответ

1

Использование списка понимание:

list1 = [1,2,3] 
num = 2 
new_list = [i for i in list1 if i != num] 
print(new_list) 
>> [1,3] 
0
def remove(item,given_list): 
    new_list = [] 
    for each in given_list: 
     if item != each: 
      new_list.append(each) 
    return new_list 

print(remove(2,[1,2,3,1,2,1,2,2,4])) 
#outputs [1, 3, 1, 1, 4] 

Хотя мой ответ так сильны, как и другие, я считаю, что это фундаментальный способ мышления о том, как удалить элемент из списка. Это позволяет людям понять на базовом уровне того, что происходит.

В основном мы берем 2 входа, элемент для удаления и список для его удаления. Он проходит через input_list и проверяет, равен ли itemitem, который мы хотим удалить, если это не то же самое мы, append, в новый список и вернем новый список.

Мы не хотим удалять элементы на месте в цикле, поскольку это может вызвать нежелательный цикл. Например, если у нас есть example_list=[1,2,3], и мы находимся на второй итерации for loop, и мы удалим 2 на месте, он попытается пойти куда-то, мы не хотим, чтобы он уходил.

0

Принимая во внимание:

list=[1,2,3,2] 

Вы можете проверить, если элемент находится в списке с:

if num in list 

А потом удалить с:

list.remove(num) 

И итерацию через него

Пример:

>>> list=[1,2,3] 
>>> list.remove(2) 
>>> print list 
[1, 3] 
+0

OP не может использовать 'remove()' – MooingRawr

2

Похоже, это проблема домашних заданий, тем более, что вы не можете использовать .remove.

Учитывая, что ваш учитель, вероятно, хочет, чтобы вы ручной подход, который выглядит примерно так:

  1. Создать новый список
  2. Для каждого пункта в предыдущем списке ...
    1. Если это не значение, которое вы хотите отфильтровать, .append его в новый список
  3. Вернуться ваш новый список

(Mouseover, если вы не хотите, чтобы написать код сами)

 
def remove(list1, num): 
    new_list = [] 
    for item in list1: 
     if item != num: 
      new_list.append(item) 
    return new_list

0

Для перехода с чистыми петлями и удалить с индексом списка:

#!/usr/bin/env python 
from __future__ import print_function 

def remove(item, old_list): 
    while True: 
     try: 
      # find the index of the item 
      index = old_list.index(item) 
      # remove the item found 
      del old_list[index] 
     except ValueError as e: 
      # no more items, return 
      return old_list 

a_list = [1, 2, 3, 2, 1, 3, 2, 4, 2] 
print(remove(2, a_list)) 

Если это возможно, конечно, вы должны использовать список понимание, которое вещий и гораздо проще!

Смежные вопросы