我在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?
答案 0 :(得分:7)
这纯粹是Python 3中的设计选择,因为enumerate
经常用于循环/列表理解,所以不需要生成一个完整的列表并为临时对象分配内存很可能是之后未使用。
大多数人使用for i,e in enumerate(example):
,因此他们甚至没有注意到生成器方面,内存/ CPU占用空间也较低。
要获得实际的list
或set
,您必须像您一样明确强制进行迭代。
(请注意,与range
,zip
或map
相对,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