我正在尝试从列表中删除偶数。我的最终输出是[4,8]
但它应该是空的。
list = [2, 4, 6, 8, 10]
for i in list:
divid = i %2
if divid == 0 :
list.remove(i)
print(list)
您在迭代列表时正在修改该列表。想象一个指针沿着列表移动。对于第一次迭代,索引为 0(并且i
是 2)。您删除第一个值并返回到循环的开头。
索引增加(到 1)并且i
现在是列表中的第二个值(现在是 6),该值也被删除。请注意,4 现在位于迭代器索引“后面”,并且永远不会到达。继续沿着列表,您将删除剩下的每个第二个值[4, 8]
.
一些提示。要循环这样的列表,您可以使用for i in list[:]:
它在迭代列表之前复制列表。还要避免命名变量,例如list
它覆盖内置类型。稍后您将在代码中引起错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)