首页 > 解决方案 > Python list.remove()

问题描述

任务是从列表中删除所有零,因此我编写了以下代码:

a = [9, 0, 0, 9, 1, 2, 0, 1, 0, 1, 0, 3, 0, 1, 9, 0, 0, 0, 0, 9]
for i in a:
    if i == 0:
        a.remove(i) 
print(a)

输出是: [9, 9, 1, 2, 1, 1, 3, 1, 9, 0, 0, 0, 9]

由于某种原因,它只在倒数第二个 9 之后删除一个零,然后停止。谁能解释为什么它不删除每一个?

标签: pythonlist

解决方案


您的问题是您在迭代列表时正在更改列表。做这个:

a = [9, 0, 0, 9, 1, 2, 0, 1, 0, 1, 0, 3, 0, 1, 9, 0, 0, 0, 0, 9]
a = [a for a in a if a != 0]
print(a)

印刷[9, 9, 1, 2, 1, 1, 3, 1, 9, 9]


推荐阅读