for循环和list.remove()不会在python中删除列表中的所有项目

时间:2018-07-30 23:50:40

标签: python list for-loop

names_friends=["Juan","Efren","Kiki", "Esmoris", "Diego", "Nando"]
for i in names_friends:
    print(i)
    names_friends.remove(i)

print(names_friends)

运行此代码后,我得到了。

Juan
Kiki
Diego
['Efren', 'Esmoris', 'Nando']

如果有人能向我解释为什么它不能删除列表中的所有项目,我将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

您正在更改可迭代的,同时对其进行迭代。因此,一旦从其中删除一个对象,它可能会跳过下一个对象。

如果您遍历副本,此问题将消失,例如

for i in names_friends[:]:
    print(i)
    names_friends.remove(i)