2012-01-27 53 views
3

有没有办法在Python for循环中访问迭代计数器?有没有办法在Python for循环中访问迭代计数器?

我通常使用我自己的变量,并在任何循环中增加它。有没有更pythonic的方式?

+0

没有柜台!那么,在迭代器内部可能会有,并且对于数组类对象有一个特殊情况,这些对象不会被计数,但通常它只是一个迭代器对象,每次都要求提供下一个值。 – delnan 2012-01-27 15:48:50

回答

17

使用enumerate

sequence = [1, 45, 65, 7] 
for i, val in enumerate(sequence): 
    print i, val 

输出:

0 1 
1 45 
2 65 
3 7 
+0

不错的把戏。谢谢!学到了新东西。 – 2012-01-27 15:40:59

3

您不仅可以使用enumerate内置的,但它有一个鲜为人知的第二个可选参数,该值在开始:

f = open(...) 
for linenumber, line in enumerate(f, 1): 
    # etc. 

这样你可以给你的元素更自然编号,而不是为第一个元素获得零,并且不得不在某处添加1。