首页 > 解决方案 > 我不能从我的集合中删除一个日期时间对象?

问题描述

base = datetime.date.today()
dateset = set([base + datetime.timedelta(days=x) for x in range(20)]

for d in dateset:
 if d.weekday() == 0:
  dateset.discard(d)

如您所见,我想删除任何 aweekday()为 0 的日期时间对象。

但是上面的代码抛出了错误RuntimeError: Set changed size during iteration

任何帮助深表感谢。

标签: pythondatetimesetlist-comprehensionpython-datetime

解决方案


您正在迭代一个在运行时会改变其大小的对象,即dateset在使用dateset.discard(d).

获取另一个迭代器,例如for idx in range(len(dateset)):迭代并dateset相应地删除项目。


推荐阅读