迭代生成器时计算总数的正确方法是什么?

yeg*_*gle 5 python

我总是被告知,enumerate当您需要计算数字并同时迭代时,可以使用内置函数.

例如,这是Python中常见的习惯用法(函数gen返回生成器):

for index, item in enumerate(gen()):
    # Do something with item

# get the numbers consumed from generator
print("% number of items processed" % (index+1,))
Run Code Online (Sandbox Code Playgroud)

但如果发电机什么也没有返回?例如enumerate(range(0)),index变量将是未定义的.

我们可以index在for循环之前定义变量,但是还有更多我不知道的pythonic解决方案吗?

unu*_*tbu 5

enumerate(gen(), start=1)index开始计数1,去除的需要index+1.否则,我认为你拥有的已经是Pythonic.

index = 0
for index, item in enumerate(gen(), start=1):
    # Do something with item

print("%d number of items processed" % (index,))
Run Code Online (Sandbox Code Playgroud)