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
中删除项目。
关于python - 我无法从集合中删除日期时间对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59177616/