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

Posted

技术标签:

【中文标题】在 Python FOR 循环中获取循环计数【英文标题】:Get loop count inside a Python FOR loop 【发布时间】:2011-03-10 21:19:50 【问题描述】:

在 Python for 循环中迭代我们可以编写的列表:

for item in list:
    print item

它巧妙地遍历了列表中的所有元素。有没有办法在循环中知道到目前为止我已经循环了多少次?例如,我想获取一个列表,在处理完十个元素后,我想对它们做一些事情。

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

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)来获取到目前为止的迭代次数?

【问题讨论】:

您可能还对分块迭代列表的答案感兴趣:***.com/questions/434287/… Accessing the index in Python for loops的可能重复 【参考方案1】:

pythonic的方式是使用enumerate:

for idx,item in enumerate(list):

【讨论】:

超级骗子,一条神奇的线解决所有问题【参考方案2】:

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

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

【讨论】:

您也可以使用enumerate 的可选start 参数以1 而不是0 开始枚举,不过我会使用OP 的名称count 而不是idx【参考方案3】:

我知道一个很老的问题,但是....看到其他东西,所以我试了一下:

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

【讨论】:

【参考方案4】:

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

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

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

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

output : Index : 0 Element : Pakistan ...

另见:

Python.org

【讨论】:

【参考方案5】:

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

【讨论】:

我不确定你在这里如何使用 count。 Count 用于生成数字序列。 但是它将如何重置下一次迭代的值。在这里使用 itertools.count() 是不可行的。【参考方案6】:

您也可以执行此操作来检查列表索引。当它到达列表索引 9 时,即列表的第 10 个元素,它将打印“did 10”。

for item in list:
    print item
    if list.index(item) == 9:
        print 'did ten'

【讨论】:

这不适用于具有重复元素的lists,例如[0, 1, 2, 0]

以上是关于在 Python FOR 循环中获取循环计数的主要内容,如果未能解决你的问题,请参考以下文章

python之while与for循环,break与continue

如何在 Java 中的 Iterable 的 for 循环中创建一个计数器并获取计数器变量的值

python循环控制间隔。

减少计数值以重复循环循环不起作用。 python中的for循环有一个异常处理程序,它有一个continue语句

Python 2352周存钱挑战3.0(循环计数for)

vue for循环中的saldo计数器给出无限循环错误