【发布时间】:2013-04-24 23:42:10
【问题描述】:
我对以下行为感到惊讶:
>>> 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()?谢谢。
【问题讨论】:
-
另外,你没有要求它,但也许你希望枚举表现得像一个列表,你总是可以做 en=list(enumerate(a))。这会将可迭代的 enumerate(a) 耗尽到列表中,并将列表分配给 en。
-
感谢大家的回答!现在清楚多了。
标签: python list tuples enumerate