Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用循环追加到列表_Python_List_Loops - Fatal编程技术网

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