Python <;枚举0x7f0211ea2360处的对象>;

Python <;枚举0x7f0211ea2360处的对象>;,python,enumerate,Python,Enumerate,我在Python3.5.2中运行了以下代码,并获得了相应的输出 >>> example = ['a','b','c','d','e'] >>> enumerate(example) <enumerate object at 0x7f0211ea2360> 当我使用一个列表来包含这些元组时,输出是令人满意的 >>> list(enumerate(example)) [(0, 'a'), (1, 'b'), (2, 'c'), (3

我在Python3.5.2中运行了以下代码,并获得了相应的输出

>>> example = ['a','b','c','d','e']
>>> enumerate(example)
<enumerate object at 0x7f0211ea2360>
当我使用一个列表来包含这些元组时,输出是令人满意的

>>> list(enumerate(example))
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]
注意:我是python的新手,当我发布这个问题时,我不知道map函数,所以我没有提到这个问题

在Python 3中,这纯粹是一种设计选择,因为它经常用于循环/列表理解,因此无需生成完整的列表,也无需为以后很可能未使用的临时对象分配内存

大多数人在enumerate(示例)中对i,e使用
,因此他们甚至没有注意到生成器方面,并且内存/CPU占用率更低

要获得实际的
列表
集合
,必须像以前那样显式地强制迭代


(请注意,与
range
zip
map
相反,
enumerate
始终是一个生成器,即使在python 2.7中,从一开始就是一个不错的选择)

了解enumerate

假设
train\u id
是我的培训对象列表

aa=enumerate(train_ids)
type(aa)
for i in aa:
    print(i)

因为
enumerate
是一个iterable。这些值是根据需要生成的。如果您遵循基于Python 2的教程,这可能就是您感到困惑的原因:Python 3引入了这种行为。在这种情况下,您可能应该切换到另一个教程。可能的重复(相同的原理和答案比
map
更普遍地讨论)@JonasSchäfer不适用于
枚举
,不。它一直是一个生成器。@BhargavRao正在进行一些润色?:)@让·弗朗索瓦·法布,我没听懂你的话。没关系,这只是一个关于擦亮坏帖子的笑话。
l1 = ['a','b','c','d','e']
for i in enumerate(l1):
   print i
aa=enumerate(train_ids)
type(aa)
for i in aa:
    print(i)