在python for循环中创建计数器

Creating a counter inside a Python for loop

本问题已经有最佳答案,请猛点这里访问。

显然,如果我们这样做,计数器将保持在0,因为它在每次迭代开始时被重置:

1
2
3
4
5
for thing in stuff:
    count = 0
    print count
    count =+1
    write_f.write(thing)

但是,因为我在函数内部有这个代码,所以也不能这样做:

1
2
3
4
5
count=0
for thing in stuff:
    print count
    count =+1
    write_f.write(thing)

我有几个不同的缩进级别,不管我如何移动count=0,它要么没有效果,要么抛出UnboundLocalError: local variable 'count' referenced before assignment。有没有一种方法可以在for循环本身内部生成一个简单的交互计数器?


这(在for循环之前创建一个额外的变量)不是Python式的。

当有一个额外的计数器时,迭代项目的方法是使用enumerate

1
2
for index, item in enumerate(iterable):
    print(index, item)

因此,例如,对于清单lst,这将是:

1
2
3
4
lst = ["a","b","c"]

for index, item in enumerate(lst):
  print(index, item)

…并生成输出:

1
2
3
0 a
1 b
2 c

强烈建议您尽可能始终使用python的内置函数来创建"pythonic解决方案"。还有枚举文档。

如果您需要更多关于枚举的信息,可以查找pep 279——enumerate()内置函数。