<枚举对象0x7f0211ea2360>

Som*_*ody 1 python enumerate

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

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

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

 (0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e') 
Run Code Online (Sandbox Code Playgroud)

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

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

注意:我是python的新手,当我发布这个问题我不知道地图功能所以我没有提到这个问题 为什么地图返回地图对象而不是Python 3中的列表?

Jea*_*bre 7

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

大多数人使用for i,e in enumerate(example):它们甚至没有注意到发生器方面,并且内存/ CPU占用空间更低.

为了获得一个实际的listset,你必须明确地强制迭代像你这样.

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