gpt4 book ai didi

python - 从列表中动态删除元素

转载 作者:行者123 更新时间:2023-11-30 22:35:55 24 4
gpt4 key购买 nike

我的问题看起来有点奇怪和简单,但我找不到令人满意的答案。我想迭代一个列表,并从中删除元素。当删除后列表中只剩下一个元素时,就会出现问题:循环不会迭代最后一个元素,就像列表为空一样。

我正在使用 for .. in ..,如下例所示:

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]

这是否意味着像我在列表上所做的迭代不会在删除元素时动态调整列表的大小(使用 for i in range() 会发生同样的事情)?或者只是因为我只是达到了 i = len,所以我不能再进一步了?

我总是可以作弊并检查 len 何时等于 1,但我想了解是否有更漂亮的方法来做到这一点。

非常感谢。

最佳答案

问题是,当您从列表中删除项目时,其他项目会更改其中的位置,导致循环不断迭代时跳过其中一些项目。尝试使用更多元素,您将看到跳过如何遵循某种模式。

为了避免这种情况,您需要以不同的方式迭代列表,并且在我看来是向后迭代。

一种实现方法可能如下:

    i = len(test)-1
while (i>=0):
del test[i]
i-=1
print(test)

关于python - 从列表中动态删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44364107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com