在Python for循环中创建一个计数器

DIG*_*SUM 3 python loops

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

for thing in stuff:
    count = 0
    print count
    count =+1
    write_f.write(thing)
Run Code Online (Sandbox Code Playgroud)

但是因为我在函数内部有这个代码,所以它也不起作用:

count=0
for thing in stuff:
    print count
    count =+1
    write_f.write(thing)
Run Code Online (Sandbox Code Playgroud)

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

dan*_*451 19

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

在有额外计数器的情况下迭代项目的pythonic方法是使用enumerate:

for index, item in enumerate(iterable):
    print(index, item)
Run Code Online (Sandbox Code Playgroud)

因此,例如对于列表,lst这将是:

lst = ["a", "b", "c"]

for index, item in enumerate(lst):
  print(index, item)
Run Code Online (Sandbox Code Playgroud)

...并生成输出:

0 a
1 b
2 c
Run Code Online (Sandbox Code Playgroud)

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


如果您需要有关枚举的更多信息,可以查找PEP 279 - enumerate()内置函数.