簡體   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