任何人都可以向我解释为什么这个Python脚本会产生这个输出吗?
>>> a = range(0,50)
>>> for x in a:
... a.remove(x)
...
>>> a
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39]
这对我来说很奇怪,因为脚本只删除每一个条目。我认为循环会迭代地删除列表中的所有项目。
答案 0 :(得分:4)
什么
for x in a:
真的是它使用内部计数器,所以它会返回[0],[1],[2] ......
代码的作用是删除项目会改变循环索引应该指向的位置,所以:
第一个循环,index == 0
,你删除a[0]
,这是0.第二个循环,索引是1,但现在,a是[1..49],a[1]
是2。
等等。
答案 1 :(得分:1)
>>> a = range(0,50)
>>> for x in a[:]:
... a.remove(x)
...
>>> a
[]
复制列表(a[:]
),这样您就不会在迭代时修改它。