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)
So as you can see I want to remove any datetime object that has a weekday()
of 0.
However the above code throws the error RuntimeError: Set changed size during iteration
Any help is much appreciated.
Rather than creating the set then removing items, you could just only put items into the set that you want in the first place.
base = datetime.date.today()
dateset = set([base + datetime.timedelta(days=x) for x in range(20) if (base + datetime.timedelta(days=x)).weekday() != 0])
>>> dateset
{datetime.date(2019, 12, 4),
datetime.date(2019, 12, 5),
datetime.date(2019, 12, 6),
datetime.date(2019, 12, 7),
datetime.date(2019, 12, 8),
datetime.date(2019, 12, 10),
datetime.date(2019, 12, 11),
datetime.date(2019, 12, 12),
datetime.date(2019, 12, 13),
datetime.date(2019, 12, 14),
datetime.date(2019, 12, 15),
datetime.date(2019, 12, 17),
datetime.date(2019, 12, 18),
datetime.date(2019, 12, 19),
datetime.date(2019, 12, 20),
datetime.date(2019, 12, 21),
datetime.date(2019, 12, 22)}