【发布时间】:2011-05-08 23:59:16
【问题描述】:
这似乎不起作用,但我不知道为什么:
for n in poss:
poss.append(n+6)
是否有一些规则规定我不能将项目附加到我当前正在循环的列表中?
【问题讨论】:
-
需要使用副本。使用切片:
poss[::]元组:tuple(poss)或重复列表:list(poss)与切片形式相同...
标签: python
这似乎不起作用,但我不知道为什么:
for n in poss:
poss.append(n+6)
是否有一些规则规定我不能将项目附加到我当前正在循环的列表中?
【问题讨论】:
poss[::] 元组:tuple(poss) 或重复列表:list(poss) 与切片形式相同...
标签: python
在遍历列表时附加到列表将进入无限循环,因为您在每次迭代中都会向循环添加更多元素。
您应该迭代列表的副本。例如,尝试以下操作:
for n in tuple(poss):
poss.append(n+6)
【讨论】:
您的代码确实有效,但永远不会结束,因为 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]
【讨论】: