我对以下行为感到惊讶:
>>> a=['a','b','c','d','e','f','g']
>>> en=enumerate(a)
>>> list(en)
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')]
>>> list(en)
[]
>>> # en changed? let's try that again!
>>> a=['a','b','c','d','e','f','g']
>>> en=enumerate(a)
>>> tuple(en)
((0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g'))
>>> tuple(en)
()
>>> # en changes again?
我假设这list()
只会从 en 中的数据构建一个列表,并且不会以任何方式更改它。与 相同tuple()
。但它们都以“深刻”的方式影响 en。我是误解了什么list()
,tuple()
还是我误解了enumerate()
?谢谢。