<enumerate object =“”at =“”0x7f0211ea2360 =“”>

时间:2017-01-12 08:45:29

标签: python enumerate

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

>>> example = ['a','b','c','d','e']
>>> enumerate(example)
<enumerate object at 0x7f0211ea2360>

我无法理解这个输出是什么意思。为什么输出不是这样的

 (0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e') 

当我使用列表来包含这些元组时,输出是令人满意的

>>> list(enumerate(example))
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]

注意:我是python的新手,当我发布这个问题我不知道地图功能所以我没有提到这个问题 Why does map return a map object instead of a list in Python 3?

3 个答案:

答案 0 :(得分:7)

这纯粹是Python 3中的设计选择,因为enumerate经常用于循环/列表理解,所以不需要生成一个完整的列表并为临时对象分配内存很可能是之后未使用。

大多数人使用for i,e in enumerate(example):,因此他们甚至没有注意到生成器方面,内存/ CPU占用空间也较低。

要获得实际的listset,您必须像您一样明确强制进行迭代。

(请注意,与rangezipmap相对,enumerate始终是一个生成器,即使在python 2.7中,从一开始就是不错的选择)< / p>

答案 1 :(得分:0)

了解枚举

train_ids是我训练对象的列表。

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

答案 2 :(得分:-3)

l1 = ['a','b','c','d','e']
for i in enumerate(l1):
   print i