设置某些条件时,为什么不能从嵌套列表中删除某些项目?

时间:2019-03-27 15:58:02

标签: python-3.x list

我正在尝试从嵌套列表中删除一些不需要的结果,但是当我尝试这样做时:

entrypoint.sh

输出为:

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

它确实删除了[[132], [133, 259]] ,但没有删除也应该删除的[127,236]

那应该怎么发生?

1 个答案:

答案 0 :(得分:0)

在迭代过程中,不允许从list中删除元素。这就是为什么您在这里有如此奇怪的行为-在删除[127, 236]集合大小之后,第3个元素变为2nd并完成循环,因为它认为代码到达了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]]