2014-03-04 162 views
186

我使用Tkinter的Python和整個下面的代碼來:枚舉是什麼意思?

for row_number, row in enumerate(cursor): 

我想知道是否有人能說明什麼在這方面列舉的手段?

+11

http://docs.python.org/2/library/functions.html#enumerate – ndpu

回答

331

enumerate() function向迭代器添加計數器。

因此,對於cursor中的每個元素,使用(counter, element)生成元組; for循環分別將其綁定到row_numberrow

演示:

>>> elements = ('foo', 'bar', 'baz') 
>>> for elem in elements: 
...  print elem 
... 
foo 
bar 
baz 
>>> for count, elem in enumerate(elements): 
...  print count, elem 
... 
0 foo 
1 bar 
2 baz 

默認情況下,enumerate()開始計數在0但如果你給它一個第二個整數參數,它會從這個數字,而不是開始:

>>> for count, elem in enumerate(elements, 42): 
...  print count, elem 
... 
42 foo 
43 bar 
44 baz 
+0

你的演示是有用,但是你能解釋一下情況嗎?[i爲i,x在枚舉(wl)中,如果x ==「gonna」] –

+2

@HemantYadav:這只是*列表理解的一部分*(儘管它有一個錯誤,那第二個逗號可能不應該在那裏),並且不特定於'enumerate()'。請參閱[Python for-in循環前面有一個變量](// stackoverflow.com/q/6475314);它爲'wl'中的所有字符串'gonna''構建一個索引列表。 –

69

這是一個內置發電機功能,見http://docs.python.org/2/library/functions.html#enumerate

總之,它產生的迭代器的元素,以及一個索引號:

for item in enumerate(["a", "b", "c"]): 
    print item 

打印

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

,如果你要循環的迭代符這是有幫助的,也希望有一個可用的索引計數器。如果你想讓計數器從其他值開始(通常爲1),你可以把它作爲第二個參數給enumerate

+1

我想你在你的第一行代碼中缺少一個']。 – elParaguayo

+0

如果你添加第二個變量到'item',那麼你可以刪除括號:D – Abdelouahab

2

的枚舉功能的工作原理如下:

doc = """I like movie. But I don't like the cast. The story is very nice""" 
doc1 = doc.split('.') 
for i in enumerate(doc1): 
    print(i) 

輸出是

(0, 'I like movie') 
(1, " But I don't like the cast") 
(2, ' The story is very nice')