附加循环列表

时间:2016-11-04 10:37:32

标签: python list loops

我对这条蟒蛇感到困惑。根据我的理解,它应该只进行一次循环,因为列表中只有一个元素,但它似乎不断循环,我不知道为什么。我知道如何让它按照我想要的方式工作,但我只是为什么这样做不开始感到困惑。感谢

y=["hello"]
for n in y:
    y.append("e")

2 个答案:

答案 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
...