Python2.7 - 循环中的 list.remove(item) 给出了意外的行为

标签 python python-2.7

<分区>

我想删除列表中的所有偶数。但是有件事让我很困惑... 这是代码。

lst = [4,4,5,5]

for i in lst:
    if i % 2 == 0:
        print i
        lst.remove(i)

print lst

它打印 [4, 5, 5] 为什么不打印 [5, 5]?

最佳答案

应该是这样的

for i in lst[:]:
    if i % 2 == 0:
        print i
        lst.remove(i)

print lst

问题:

您在迭代列表时正在修改它。因此,迭代在完成之前就停止了

解决方案:

您可以遍历列表的副本

您可以使用列表理解:

lst=[i for i in lst if i%2 != 0]

关于Python2.7 - 循环中的 list.remove(item) 给出了意外的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32043963/

相关文章:

python - 如何在 Python 中有效地进行字节对编码二元组计数和替换?

带有负数的 Python 正则表达式问题

python - 在 Debian Squeeze 上不小心从/usr/include/python2.7 中删除了 pyconfig.h 文件

python - 如何从 TinyDB 中删除记录或文件

python - 将多索引pandas数据框导出到excel

python-2.7 - Python sqlite3 Column1 val 的 Column 2 val 等于数字,并且 val 等于另一个数字

python - Scrapy 中项目的 has_key

python - 与请求(python 2.7)一样获取图像文件,然后使用帖子发送到服务器

python - 有没有办法检查子进程是否仍在运行?

python - pip install --no-build-isolation 返回没有这样的选项 : --no-build-isolation