显然,如果我们这样做,计数器将保持为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()内置函数.