for循环完成后获取迭代次数

时间:2018-09-05 00:20:01

标签: python for-loop

在python for循环中,当循环完成时,如何获得下面的i值?是否有任何惯用的方法可以做到,而无需在循环外部定义变量并在每次循环运行中将i存储在变量中?像某种finally的for循环吗?

for i, data in enumerate(somevar):
    # do something
# get what i was when for loop completed here??

2 个答案:

答案 0 :(得分:2)

什么都不做。 for循环不会创建新的作用域。您可以在循环之后和循环之外立即访问i

for i, data in enumerate(somevar):
    pass

print(i)  # 9

有关更多详细信息,请参见Scoping in Python 'for' loops

答案 1 :(得分:1)

i将满足您的需求。

for循环没有finally块,但是它们确实有else,如果您没有在主体中碰到break,则该循环将被执行。

for i, value in enumerate(values):
     if value == some_value:
          print("Found the value")
          break
else:
    print("Didn't find value we were looking for")

print("Went through for loop {} times".format(i))