<分区>
我想删除列表中的所有偶数。但是有件事让我很困惑... 这是代码。
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]?
标签 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 - 在 Debian Squeeze 上不小心从/usr/include/python2.7 中删除了 pyconfig.h 文件
python - 将多索引pandas数据框导出到excel
python-2.7 - Python sqlite3 Column1 val 的 Column 2 val 等于数字,并且 val 等于另一个数字
python - 与请求(python 2.7)一样获取图像文件,然后使用帖子发送到服务器
python - pip install --no-build-isolation 返回没有这样的选项 : --no-build-isolation