刚开始学习Python。我很享受它,文档和人们说的一样有用。但是显然我没有得到Python的两个特性:那些列表和那些for循环。
此代码的结果:
lets = ['a','b','c','d','e','f','g','h','i','j']
for j in lets:
del lets[0]
print(lets)
这是:
['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
['d', 'e', 'f', 'g', 'h', 'i', 'j']
['e', 'f', 'g', 'h', 'i', 'j']
['f', 'g', 'h', 'i', 'j']
为什么它停在五步而不是十步(因此删除所有项目)?
答案 0 :(得分:4)
您在迭代时修改集合。这是一个巨大的红旗 - 永远不要这样做。
如果您想修复上述代码,请迭代lets
的副本:
for j in lets[:]:
del lets[0]
或其他一些与lets
长度相同的对象,例如range(len(lets))
。
我会指出上述内容更简单地使用lets.clear()
答案 1 :(得分:2)
据我所知,lets
中有十个元素。你的循环停在五点。删除五个元素后,剩下五个元素。在第五个循环之后,它会检查lets
中有多少个元素,看到五个,并且因为它已经循环五次而停止。