If set size changes during a for loop, a runtime exception is raised:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
S = {2015}
for z in S:
S.add(42)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "_.py", line 2, in <module>
for z in S:
RuntimeError: Set changed size during iteration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Surprisingly, if a for loop changes the size of a list it is iterating on, no
exception is raised :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
L = [2015]
for z in L:
L.append(42)
print(len(L))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The code above falls into an infinite loop, printing :
2
3
4
5
6
7
8
9
...
198435
198436
198437
^Z
So why lists and sets don't react the same way?
--
https://mail.python.org/mailman/listinfo/python-list