我试图解决一个包含类似于此的代码部分的问题。但是,每当我试图执行脚本时,结果都是一个无限循环。这个问题的原因是什么?我如何解决它
a=[1,2]
for i in a:
a.append(i)
print("Infinite")
我在我的电脑和谷歌Colab上本地试用了这个程序,但在这两种情况下。但是,它的工作方式不同于将值1、2附加到列表a
我通过分配z=a
创建了a
的副本,并更改了for
循环的结构,如下所示:
z=a
for i in z:
a.append(i)
但问题仍然是一样的:
Tags:
所发生的是循环的每一次迭代,都会向列表
a
添加一个新值。这意味着每次迭代后列表中总会有一个新元素,这意味着循环永远不会结束至于您的
a
副本,这并不完全创建a
的副本z=a
只是引用变量a
,因此修改z
也会修改a
您不应该在迭代容器时更改其结构。在这里,您在迭代时将添加到
a
的末尾。这将永远持续下去你的努力是正确的。问题是,
z=a
没有创建列表的副本;它将创建对同一列表的新引用您需要显式复制:
或者只是}与自己在一起:
extend
{或者乘以:
相关问题 更多 >
编程相关推荐