在Python中,可以在遍历列表时向其追加项目吗?
可能是重复的问题:
Python:在遍历列表时添加元素
这似乎不起作用,但我不太明白为什么:
for n in poss:
poss.append(n+6)
有没有什么规则说明我不能在遍历一个列表的时候往里面添加新项目呢?
2 个回答
3
你的代码实际上是可以运行的,但它永远不会结束,因为变量 poss 一直在增加。
试试这个:
poss = [1,2]
for n in poss:
poss.append(n+6)
if n > 10:
print poss
break
会产生:
[1, 2, 7, 8, 13, 14, 19]
3
在遍历一个列表的时候,如果你同时往里面添加新元素,就会进入一个无限循环,因为每次循环你都在增加更多的元素。
所以你应该在列表的一个副本上进行遍历。比如,你可以试试下面的做法:
for n in tuple(poss):
poss.append(n+6)