以下代码片段在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[:]是列表的副本.您可以迭代副本,同时附加到原始文件就好了.