为什么在迭代过程中向集合添加和删除元素时会得到这么多次迭代?
尝试理解Python的for循环时,我以为这个代码会在一次迭代中得到结果{1}
,或者会陷入无限循环,这取决于它是否像C或其他语言那样进行迭代。但实际上它都没有发生。
>>> s = {0}
>>> for i in s:
... s.add(i + 1)
... s.remove(i)
...
>>> print(s)
{16}
为什么它会进行16次迭代?结果{16}
从何而来?
这是在Python 3.8.2上运行的。在pypy上会得到预期的结果{1}
。