我对这条蟒蛇感到困惑。根据我的理解,它应该只进行一次循环,因为列表中只有一个元素,但它似乎不断循环,我不知道为什么。我知道如何让它按照我想要的方式工作,但我只是为什么这样做不开始感到困惑。感谢
y=["hello"]
for n in y:
y.append("e")
答案 0 :(得分:1)
每次迭代循环时,您都会向y
添加新元素。在第一次迭代中,它会看到'hello'
,然后追加'e'
。在第二次迭代中,它看到'e'
并附加另一个,然后在第三次看到那个,依此类推。如果您尝试删除(而不是追加)元素到您正在迭代的列表,则会出现类似的问题。如果你想避免这种情况,请迭代副本:
>>> y = ["hello"]
>>> for n in y[:]:
... y.append("e")
...
>>> y
['hello', 'e']
答案 1 :(得分:0)
您要在正在解析的同一列表中附加一些数据。在每次迭代结束时,添加了新元素(“e”),这就是你进行无限循环的原因。
["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 ...