for 循环忽略列表中的一些元素
可能的重复:
在 Python 中迭代时从列表中删除项目 < /p>
想要删除列表中晚于给定日期的所有日期。我不明白为什么我的方法只删除列表中的某些项目。这就是我得到的:
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)]
Possible Duplicate:
Remove items from a list while iterating in Python
I want to remove all the dates in a list which are later than a given date. I can't see why my method only removes some items of the list. Here's what I've got:
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
returns
[datetime.date(2012, 1, 1), datetime.date(2013, 1, 3)]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
James 和 GWW 是对的,当你迭代列表时,你不能修改列表。而是将您想要保留的项目复制到新列表中。
James and GWW are right, you cant modify the list while you are iterating through the same. Instead copy the items which you want to keep to a new list.
或者像这样就地修改:
或者
Or modify in place like this:
or