【问题标题】:Creating a counter inside a Python for loop [duplicate]在 Python for 循环中创建计数器 [重复]
【发布时间】:2017-04-16 06:29:26
【问题描述】:

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

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

但是由于我在函数内部有这段代码,所以这样做也不起作用:

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

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

【问题讨论】:

  • count =+1 -> count += 1
  • 不正确。您的第二个代码工作正常(除了约翰尼指出的错字)。您需要显示实际代码和错误。
  • 您也可以使用enumeratefor count, thing in enumerate(stuff):

标签: python loops


【解决方案1】:

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

使用enumerate

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

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

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

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

...并生成输出:

0 a
1 b
2 c

强烈建议您尽可能始终使用 Python 的 built-in functions 来创建“pythonic 解决方案”。还有enumerate的文档。


如果您需要更多关于枚举的信息,可以查找PEP 279 -- The enumerate() built-in function

【讨论】:

  • 这是与链接副本相同的信息。它应该刚刚作为副本关闭。
猜你喜欢
  • 2010-11-14
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2017-02-12
  • 1970-01-01
  • 2020-10-18
  • 2018-09-11
相关资源
最近更新 更多