为什么“for list in list”循环只走了一半?

时间:2014-03-27 19:47:52

标签: python

我试图修改包含超过一百行代码的循环函数。

如果我在python中有一个遍历列表的循环,为什么for item in list:循环只完成了一半?在弹出所有项目之前,它不应该继续循环吗?

例如,如果我有这个清单:

 l1 = [1,2,3,4,5,6]


    for item in l1:
        l1.pop(0)
        print l1

无论列表包含多少项,只有在弹出列表的50%时才会完成:

上面的代码输出:

[2, 3, 4, 5, 6]
[3, 4, 5, 6]
[4, 5, 6]

Process finished with exit code 0

我是否仍然可以弹出列表中的每个项目而不更改for item in l1:循环?

1 个答案:

答案 0 :(得分:0)

您可以创建列表的副本并从原始列表中弹出:

In [1]: l1 = [1,2,3,4,5,6]

In [2]: for item in l1[:]:
   ...:     l1.pop(0)
   ...:     print l1
   ...:     
[2, 3, 4, 5, 6]
[3, 4, 5, 6]
[4, 5, 6]
[5, 6]
[6]
[]

然而,这肯定不优雅。