ChatGPT解决这个技术问题 Extra ChatGPT

获取for循环内的循环计数

for 循环遍历列表中的所有元素:

for item in my_list:
    print item

有没有办法在循环中知道到目前为止我已经循环了多少次?例如,我想列出一个列表,在处理完十个元素后,我想对它们做点什么。

我想到的替代方案是:

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

或者:

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

有没有更好的方法(就像 for item in my_list)来获取到目前为止的迭代次数?

您可能还对分块迭代列表的答案感兴趣:stackoverflow.com/questions/434287/…

M
Mateen Ulhaq

pythonic方式是使用enumerate

for idx, item in enumerate(my_list):

超级骗子,一条神奇的线解决所有问题
V
Vikram Garg

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

#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
H
Hans Ginzel

使用 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


h
hephestos

我知道相当老的问题,但是....遇到了其他事情,所以我试了一下:

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

V
Vatsal Dutt

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

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

这不适用于具有重复元素(如 [0, 1, 2, 0])的 list
当列表中有重复元素时,这将失败。