#python-3.x #list
#python-3.x #Список
Вопрос:
Я пытаюсь удалить некоторый нежелательный результат из моего вложенного списка, но когда я попробовал это:
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:
Не разрешается удалять элементы из 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]]