Python 用循环追加到列表
我对这条蟒蛇感到困惑。根据我的理解,它应该只循环一次,因为列表中只有一个元素,但是它似乎一直在循环,我不知道为什么。我知道如何让它工作,做我想要的,但我只是困惑,为什么这没有工作开始。谢谢Python 用循环追加到列表,python,list,loops,Python,List,Loops,我对这条蟒蛇感到困惑。根据我的理解,它应该只循环一次,因为列表中只有一个元素,但是它似乎一直在循环,我不知道为什么。我知道如何让它工作,做我想要的,但我只是困惑,为什么这没有工作开始。谢谢 y=["hello"] for n in y: y.append("e") 在循环的每次迭代中,您将向y添加新元素。在第一次迭代中,它将看到'hello',然后附加'e'。在第二次迭代中,它看到'e'并附加另一个,然后在第三次迭代中看到这个,依此类推。如果您试图删除而不是将元素追加到正在迭代的列表中
y=["hello"]
for n in y:
y.append("e")
在循环的每次迭代中,您将向
y
添加新元素。在第一次迭代中,它将看到'hello'
,然后附加'e'
。在第二次迭代中,它看到'e'
并附加另一个,然后在第三次迭代中看到这个,依此类推。如果您试图删除而不是将元素追加到正在迭代的列表中,也会出现类似的问题。如果要避免这种情况,请在副本上迭代:
>>> y = ["hello"]
>>> for n in y[:]:
... y.append("e")
...
>>> y
['hello', 'e']
您正在分析的同一列表中追加一些数据。在每次迭代结束时,都会添加新元素(“e”),这就是为什么要创建一个无限循环
当到达列表
y
的末尾时,循环将结束。你无法到达列表的末尾,因为你一直在添加额外的内容。最好不要在迭代过程中更改某些内容。在迭代过程中更改列表的长度-这是一个坏主意。查看可视化相反,您可以将更新保存在另一个列表中。很抱歉,在发布后,我几乎立即意识到了这一点,在困惑和谷歌搜索了大约45分钟。谢谢,我觉得自己像个白痴。我才意识到为什么。这是因为我不断地向列表中添加元素,所以列表中总是多了一个元素,这就是无限循环。谢谢
["hello"] # 1 element, "e" will be added once
["hello", "e"] # 2 elements, "e" will be added twice
["hello", "e", "e", "e"] # 4 elements, "e" will be added 4 times
...