2014-03-04 127 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')