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 中删除项目。
