循环中a和a [:]之间的差异

Hir*_*kar 2 python for-loop

以下代码片段在Python中生成不同的输出:

a = ['b','c']
for x in a:
   a.insert(0,'d')
Run Code Online (Sandbox Code Playgroud)

循环不会终止并且python shell挂起.而,

a = ['b','c']
for x in a[:]:
   a.insert(0,'d')
print a
Run Code Online (Sandbox Code Playgroud)

生成以下内容: ['d','d','b','c']

对于python 2.6.6

有人可以解释一下上述行为的区别吗?

Bre*_*arn 14

在第一个示例中,您在迭代时添加到列表中.它永远不会停止,因为你继续使列表更长,所以它永远不会到达终点.

在第二个示例中a[:]是列表的副本.您可以迭代副本,同时附加到原始文件就好了.