Skip to main content
 首页 » 编程设计

python之我无法从集合中删除日期时间对象

2025年05月04日22jpfss

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) 

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

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

非常感谢任何帮助。

请您参考如下方法:

您正在迭代一个对象,该对象在运行时会改变它的大小,即您在 dateset 上迭代,同时使用 dateset.discard(d) 在循环中丢弃其中的项目.

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