Вопрос-Ответ

Remove all occurrences of a value from a list?

Удалить все вхождения значения из списка?

В Python remove() удалит первое вхождение значения в списке.

Как удалить все вхождения значения из списка?

Это то, что я имею в виду:

>>> remove_values_from_list([1, 2, 3, 4, 2, 2, 3], 2)
[1, 3, 4, 3]
Переведено автоматически
Ответ 1

Функциональный подход:

Python 3.x

>>> x = [1,2,3,2,2,2,3,4]
>>> list(filter((2).__ne__, x))
[1, 3, 3, 4]

или

>>> x = [1,2,3,2,2,2,3,4]
>>> list(filter(lambda a: a != 2, x))
[1, 3, 3, 4]

или

>>> [i for i in x if i != 2]

Python 2.x

>>> x = [1,2,3,2,2,2,3,4]
>>> filter(lambda a: a != 2, x)
[1, 3, 3, 4]
Ответ 2

Вы можете использовать понимание списка:

def remove_values_from_list(the_list, val):
return [value for value in the_list if value != val]

x = [1, 2, 3, 4, 2, 2, 3]
x = remove_values_from_list(x, 2)
print x
# [1, 3, 4, 3]
Ответ 3

Вы можете использовать назначение фрагмента, если исходный список должен быть изменен, при этом по-прежнему используя эффективное понимание списка (или выражение генератора).

>>> x = [1, 2, 3, 4, 2, 2, 3]
>>> x[:] = (value for value in x if value != 2)
>>> x
[1, 3, 4, 3]
Ответ 4

Повторяем решение первого поста более абстрактным способом:

>>> x = [1, 2, 3, 4, 2, 2, 3]
>>> while 2 in x: x.remove(2)
>>> x
[1, 3, 4, 3]
python list