Подтвердить что ты не робот

Как удалить все экземпляры элемента из списка в Python?

Допустим, у меня есть список a:

a = [[1, 1], [2, 2], [1, 1], [3, 3], [1, 1]]

Есть ли функция, которая удаляет все экземпляры [1, 1]?

4b9b3361

Ответ 1

Если вы хотите изменить список на месте,

a[:] = [x for x in a if x != [1, 1]]

Ответ 2

Используйте понимание списка:

[x for x in a if x != [1, 1]]

Ответ 3

Google находит Удалить все элементы в списке, который включает в себя драгоценные камни, такие как

from functools import partial
from operator import ne
a = filter(partial(ne, [1, 1]), a)

Ответ 4

def remAll(L, item):
    answer = []
    for i in L:
        if i!=item:
            answer.append(i)
    return answer

Ответ 5

Вот более простая альтернатива Алексу Мартелли:

a = [x for x in a if x != [1,1]]

Ответ 6

new_list = filter(lambda x: x != [1,1], a)

Или как функция:

def remove_all(element, list):
    return filter(lambda x: x != element, list)

a = remove([1,1],a)

Или более общий:

def remove_all(elements, list):
    return filter(lambda x: x not in elements, list)

a = remove(([1,1],),a)

Ответ 7

filter([1,1].__ne__,a)

Ответ 8

чистая версия python без модулей, или нет версии списка comp (проще понять?)

>>> x = [1, 1, 1, 1, 1, 1, 2, 3, 2]
>>> for item in xrange(x.count(1)):
...     x.remove(1)
...
>>>
>>> x
[2, 3, 2]

можно легко превратить в def.

def removeThis(li,this):
    for item in xrange(li.count(this)):
           li.remove(this)
    return li