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

问题:获取Python FOR循环中的循环计数

for遍历列表的Python 循环中,我们可以编写:

for item in list:
    print item

整齐地遍历列表中的所有元素。有没有办法知道循环中到目前为止我循环了多少次?例如,我要列出一个列表,在处理完10个元素之后,我想对它们进行处理。

我想到的替代方案可能是这样的:

count=0
for item in list:
    print item
    count +=1
    if count % 10 == 0:
        print 'did ten'

要么:

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

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

In a Python for loop that iterates over a list we can write:

for item in list:
    print item

and it neatly goes through all the elements in the list. Is there a way to know within the loop how many times I’ve been looping so far? For instance, I want to take a list and after I’ve processed ten elements I want to do something with them.

The alternatives I thought about would be something like:

count=0
for item in list:
    print item
    count +=1
    if count % 10 == 0:
        print 'did ten'

Or:

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

Is there a better way (just like the for item in list) to get the number of iterations so far?


回答 0

pythonic的方法是使用enumerate

for idx,item in enumerate(list):

The pythonic way is to use enumerate:

for idx,item in enumerate(list):

回答 1

同意尼克。这是更详细的代码。

#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变量。

Agree with Nick. Here is more elaborated code.

#count=0
for idx, item in enumerate(list):
    print item
    #count +=1
    #if count % 10 == 0:
    if (idx+1) % 10 == 0:
        print 'did ten'

I have commented out the count variable in your code.


回答 2

我知道一个比较老的问题,但是….发现其他东西,所以我投篮了:

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

I know rather old question but….came across looking other thing so I give my shot:

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

回答 3

使用zip函数,我们可以同时获取元素和索引。

countries = ['Pakistan','India','China','Russia','USA']

for index, element zip(range(0,countries),countries):

         print('Index : ',index)
         print(' Element : ', element,'\n')

output : Index : 0 Element : Pakistan ...

也可以看看 :

Python.org

Using zip function we can get both element and index.

countries = ['Pakistan','India','China','Russia','USA']

for index, element zip(range(0,countries),countries):

         print('Index : ',index)
         print(' Element : ', element,'\n')

output : Index : 0 Element : Pakistan ...

See also :

Python.org


回答 4

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

Try using itertools.count([n])