在 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'
【讨论】:
这不适用于具有重复元素的list
s,例如[0, 1, 2, 0]
以上是关于在 Python FOR 循环中获取循环计数的主要内容,如果未能解决你的问题,请参考以下文章
python之while与for循环,break与continue
如何在 Java 中的 Iterable 的 for 循环中创建一个计数器并获取计数器变量的值