为什么在迭代过程中向集合添加和删除元素时会得到这么多次迭代?

7 浏览
0 Comments

为什么在迭代过程中向集合添加和删除元素时会得到这么多次迭代?

尝试理解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}

0