我想测试 python 是否允许我运行这段代码:
listWords = []
for i in range (len(listWords)+1):
listWords.append("New word")
print ("End loop")
原因是我想创建一个程序来尝试解决一个解决方案,然后将新项目添加到列表中进行测试。
为什么当我向列表中添加新项目时 python 不更新 for 循环范围?
有没有办法使用 for 循环解决这个问题? (我怀疑 while 循环可以解决我的问题,但我只是好奇)
谢谢
最佳答案
遍历同时更新的列表是不好的做法。
在您的代码中,在您运行循环之前已经计算了范围,因此范围将为 range(1)
,然后 for 循环仅运行一次并停止。如果 listWords
不为空,而是 listWords = ['a','b']
,也可以观察到这一点,因此下面的循环运行 3 次,因为迭代器是 范围(3)
那么代码就变成了。
listWords = ['a','b']
for i in range (len(listWords)+1):
listWords.append("New word")
print ("End loop")
print(listWords)
['a', 'b', 'New word', 'New word', 'New word']
虽然循环没有这样的限制,但下面的例子将继续运行,因为 len(listWords) 总是在下一次迭代结束时更新
listWords = []
i = 0
while i < (len(listWords)+1):
listWords.append("New word")
i+=1
关于python - 创建一个无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55809659/