python - for 循环忽略列表中的一些元素

标签 python loops for-loop

Possible Duplicate:
Remove items from a list while iterating in Python

我想删除列表中晚于给定日期的所有日期。我不明白为什么我的方法只删除列表中的某些项目。这是我得到的:

import datetime
import numpy as np
import os

list_dates = [datetime.date(2012,1,3), datetime.date(2012,1,1), datetime.date(2012,1,5), datetime.date(2013,1,3), datetime.date(2013,1,1)]

for item in list_dates:
    if item > datetime.date(2012,1,1):
        list_dates.remove(item)

print list_dates

返回

[datetime.date(2012, 1, 1), datetime.date(2013, 1, 3)]

最佳答案

James 和 GWW 是对的,在迭代列表时无法修改列表。相反,请将您想要保留的项目复制到新列表中。

list_dates = [datetime.date(2012,1,3), datetime.date(2012,1,1), datetime.date(2012,1,5), datetime.date(2013,1,3), datetime.date(2013,1,1)]        

for item in list_dates:
            if item < datetime.date(2012,1,1):
                new_list_dates.add(item); // move this item (which you want to keep) to a new list.

    print new_list_dates

关于python - for 循环忽略列表中的一些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310460/

相关文章:

python - Scrapy 入门指南_Urls

python - 在 matplotlib 中禁用 tex 解释器

c - 如何使用任意数量的 scanf() 格式说明符?

JavaScript 查找数组中的字符串是否可以在对象中找到

android - findViewById 更改 for 循环中的所有出现

python - 阻止 Python 代码导入某些模块?

python - 在保持序列的同时删除二维数组中的重复项

string - 如何在 Kotlin 字符串模板中嵌入 for 循环

java - 向 vector 添加重复日期

C:哈希金字塔模式