在Python FOR循环中获取循环计数

Get loop count inside a Python FOR loop

在一个迭代列表的python for循环中,我们可以编写:

1
2
for item in list:
    print item

它整齐地贯穿了列表中的所有元素。有没有办法知道到目前为止我循环了多少次?例如,我想要一个列表,在处理完十个元素之后,我想对它们做些什么。

我想到的替代方案是:

1
2
3
4
5
6
count=0
for item in list:
    print item
    count +=1
    if count % 10 == 0:
        print 'did ten'

或:

1
2
3
4
for count in range(0,len(list)):
    print list[count]
    if count % 10 == 0:
        print 'did ten'

到目前为止,有没有更好的方法(就像for item in list那样)来获得迭代次数?


肾盂途径是使用enumerate

1
for idx,item in enumerate(list):

同意尼克的意见。下面是更详细的代码。

1
2
3
4
5
6
7
#count=0
for idx, item in enumerate(list):
    print item
    #count +=1
    #if count % 10 == 0:
    if (idx+1) % 10 == 0:
        print 'did ten'

我已经在您的代码中注释掉了count变量。


我知道一个相当古老的问题,但是……我发现了另一件事,所以我试了一下:

1
[each*2 for each in [1,2,3,4,5] if each % 10 == 0])


尝试使用itertools.count([n])