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/