繁体   English   中英

Python:枚举

[英]Python: Enumeration

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

枚举是做什么的?

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

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()可以与任何迭代器一起使用。 它枚举了iterable返回的值。

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结果没有错误; 它们是任意排序的,因此不一定像“进入”一样“出来”。 与往常一样,遍历映射会产生其密钥。

enumerate()是一个精美的工具,可为您提供该项目在可迭代项目以及项目中的索引。 没有什么是您无法使用的标准循环。

可以说我们有这个简单的清单。 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 )枚举对象时,它返回通常会返回的位置和东西:

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])

因为代码清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM