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

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

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

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

>>> x = [1, 2, 3, 4, 2, 2, 3]
>>> def remove_values_from_list(the_list, val):
        while val in the_list:
            the_list.remove(val)
>>> remove_values_from_list(x, 2)
>>> x
[1, 3, 4, 3]

python,list,

256

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


349 принят

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

2.x

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

3.x

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]

или

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

162

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

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

82

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

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

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

x

9

См. Простые решения

Решение 1:

2

Это вернет список, содержащий все элементы xбез 2

решения 2:

>>> while 2 in x : x.remove(2)
питон, список,
Похожие вопросы
Яндекс.Метрика