【发布时间】:2017-12-17 22:55:04
【问题描述】:
我无法理解为什么以下代码会无限期运行 循环(当我不使用副本列表时)
list = ["Mohit","kumar","sffsfshfsd"]
for w in list:
if(len(w)) > 5:
list.insert(0,w)
print("inside loop")
print(list)
上面的代码无限期地打印inside loop。
现在,如果代替列表,我使用下面的副本列表可以正常工作。
list = ["mohit","kumar","sffffgssddf"]
for w in list[:]:
if len(w) > 5:
list.insert(0,w)
print("inside loop")
print(list)
现在我在 python 文档中读到这是行为 我会得到,但我想了解其背后的原因。谢谢在 前进。
【问题讨论】:
-
旁注:永远不要在内置函数之后命名变量(例如
list)。 -
谢谢,会记住这一点@mpf82
-
一旦达到
"sffsfshfsd"每次迭代都会添加到列表的前面 -
您的列表在您对其进行迭代时不断增长,因此它永远不会停止。
-
但是我已经到了列表的第三个元素,为什么我们要在插入新元素之后循环回到第一个元素?
标签: python list python-3.x for-loop python-2.x