Python:枚举

Python: Enumeration

有人说枚举函数是python中的隐藏技巧。我仍然不确定它的作用。文档只是告诉我它 returns 是一个枚举对象。这并不能完全帮助我理解这个概念。

枚举有什么作用?

Enumerate 将每个元素的索引与元素配对:

for i in enumerate(['a', 'b', 'c']):
    print I

(0, 'a')
(1, 'b')
(2, 'c')

此外,您可以自己创建自己的枚举:

enum = lambda l: zip([i for i in range(len(l))], l)

enumerate() 可以与任何可迭代对象一起使用。它枚举了可迭代对象返回的值。

3>> enumerate(['a', 'b', 'c'])
<enumerate object at 0x7f1340c44a50>
3>> list(enumerate(['a', 'b', 'c']))
[(0, 'a'), (1, 'b'), (2, 'c')]
3>> list(enumerate({'a', 'b', 'c'}))
[(0, 'c'), (1, 'b'), (2, 'a')]
3>> list(enumerate({'a':0, 'b':0, 'c':0}))
[(0, 'c'), (1, 'b'), (2, 'a')]

注意 setdict 结果 而不是 错误;它们是任意排序的,因此不一定 "come out" 与它们 "go in" 相同。和往常一样,迭代映射会产生它的键。

enumerate() 是一个奇特的工具,它可以为您提供 iterable 中项目的索引以及项目。标准的 for 循环无所不能。

假设我们有这个简单的列表。 lst = ['red', 'car', 'machine', 'go', 'cloud', 'cabbages']

enumerate()

的例子
for index, item in enumerate(lst):
    print(str(item) + " Is item number: " + str(index))

没有 enumerate() 这可能看起来像。

for count in range(len(lst)):
    print(str(lst[count]) + " Is item number: " + str(count))

两者产生相同的输出。

>>> red Is item number: 0
>>> car Is item number: 1
>>> machine Is item number: 2
>>> go Is item number: 3
>>> cloud Is item number: 4
>>> cabbages Is item number: 5

当迭代(for)枚举对象它returns通常返回的位置和东西:

a = ["a", "b", "c"]
for pos, x in enumerate(a):
    print(pos, x)

上面的例子应该用来代替:

a = ["a", "b", "c"]
for x in range(len(a)):
    print(x, a[x])

因为代码清晰。