我的问题看起来有点奇怪和容易,但我找不到满意的答案。我想迭代一个列表,并从中删除元素。当删除后在列表中剩下一个元素时,问题就会发生:循环不会在最后一个元素上迭代,就像列表为空一样。从列表中动态删除元素
,我在下面的例子中使用了..在..喜欢:
def test_remove(self):
"""Test to remove all values from a list."""
test = [4, 5]
[test.remove(i) for i in test]
print test
我得到以下输出:
[5]
这是否意味着迭代就像我现在这样在列表中不动态调整列表时,删除一个元素(同样的事情发生使用我在范围内())?或者只是因为我只是到达了i = len,所以我不能再走了吗?
我总是可以作弊并检查len是否等于1,但我想知道是否有更美丽的方式来做到这一点。
非常感谢。
是的,这是我最终做的。我以为能够避免这种循环结构。谢谢 :) – Ecterion