как удалить элементы из списка, используя del и index - PullRequest
0 голосов
/ 14 января 2020

У меня есть список, из которого нужно удалить все 2:

L = [1, 2, 3, 2, 4, 8, 2]

У меня также есть индекс всех 2 в L:

myIndex = [1, 3, 6]

Как использовать del удалить все 2 с из L?

Я пробовал del L[myIndex], но это не сработало.

Ответы [ 3 ]

2 голосов
/ 14 января 2020

Вы можете использовать del в a для l oop, обеспечивая сортировку индексов в обратном порядке:

for i in sorted(myIndex, reverse=True):
    del L[i]

print(L)
[1, 3, 4, 8]
1 голос
/ 14 января 2020

Это связано с тем, что индексы смещаются на единицу при каждом удалении, а список становится короче. Более подход Pythoni c состоит в том, чтобы собрать все, что еще действует, в новый список. Это можно сделать с помощью простого понимания списка следующим образом:

L2 = [i for i in L if i != 2]

>>> L2
[1, 3, 4, 8]

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

L3 = list(filter(lambda x: x != 2, L))

>>> L3
[1, 3, 4, 8]
0 голосов
/ 14 января 2020

Вы можете использовать функцию удаления, чтобы удалить все элементы 2.

for i in range(L.count(2)):
    L.remove(2)
...