【问题标题】:Get loop count inside a Python FOR loop在 Python FOR 循环中获取循环计数
【发布时间】: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)来获取到目前为止的迭代次数?

【问题讨论】:

标签: python for-loop


【解决方案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]
      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      相关资源
      最近更新 更多