在“for”循环中列出追加问题

2024-04-25 20:20:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决一个包含类似于此的代码部分的问题。但是,每当我试图执行脚本时,结果都是一个无限循环。这个问题的原因是什么?我如何解决它

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)

但问题仍然是一样的:

enter image description here


Tags: 代码in程序脚本列表for方式情况
2条回答

所发生的是循环的每一次迭代,都会向列表a添加一个新值。这意味着每次迭代后列表中总会有一个新元素,这意味着循环永远不会结束

至于您的a副本,这并不完全创建a的副本z=a只是引用变量a,因此修改z也会修改a

您不应该在迭代容器时更改其结构。在这里,您在迭代时将添加到a的末尾。这将永远持续下去

你的努力是正确的。问题是,z=a没有创建列表的副本;它将创建对同一列表的新引用

您需要显式复制:

z=a[:]  # Copy via slice notation
for i in z:
   a.append(i)

或者只是extend{}与自己在一起:

a.extend(a)
print(a)  # [1, 2, 1, 2]

或者乘以:

a *= 2

相关问题 更多 >