Почему я не могу удалить определенный элемент из вложенного списка при настройке некоторых критериев? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь удалить нежелательный результат из моего вложенного списка, но когда я попробовал это:

ppp =  [[132],[127, 236],[133, 259]]
for p in ppp:
    if len(p) == 2:
        ppp.remove(p)
print(ppp)

Вывод был:

[[132], [133, 259]]

Он удалил [127,236], но не удалил [133, 259], который также должен быть удален.

Как это должно быть?

1 Ответ

0 голосов
/ 27 марта 2019

Запрещено удалять элементы из list во время итерации по нему.Вот почему у вас такое странное поведение - после удаления [127, 236] размер коллекции уменьшился, 3-й элемент стал 2-м и цикл завершился, потому что считал, что код достиг конца list (обработано 2 элемента из 2).Исправленный код:

ppp = [[132], [127, 236], [133, 259]]
ppp = [p for p in ppp if len(p) != 2]  # list comprehension does the trick
print(ppp)

Вывод:

[[132]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...