Python中的“for”循环后面跟着“else”的用途是什么?

6
似乎下面两个代码都打印了相同的结果,那么在Python中“for”循环之后需要“else”块的目的是什么呢?
代码 1:
for i in range(10):
    print i
else:
    print "after for loop"

代码 2:

for i in range(10):
    print i

print "after for loop"

感谢您提前阅读。
3个回答

7

根据文档

循环语句可以有一个 else 子句,在循环遍历完列表(with for)或条件变为 false 时(with while)执行,但不会在循环被 break 语句终止时执行。

请点击链接获取如何使用的示例。


4

elsefor 没有被 break 结束时执行:

for i in range(10):
    print i
    if i == 8:
        break # termination, no else    
else:
    print "after for loop"

1
当范围为空时会发生什么(即循环体根本没有被执行)? - Aaron Digulla
1
@AaronDigulla 那么就不会执行break了。因此,循环的行为就像没有break一样,继续执行else - glglgl
@Aaron Digulla:由于“for”没有被中断,“else”将被执行。 - Dmitry Bychenko

1

这最初是为了在不使用标志的情况下在程序中消除所有的“GOTO”语句而制定的: 它的意思是“无中断”。

for i, value in enumerate(sequence):
    if value == target:
        break
else:           #<-- if we finish the loop and did not encounter break, return -1
    return -1
return 1        #<-- if we did encounter break, return 1

您可以在此观看 Raymond Hettinger 的 Pycon 演讲,其中提到了 for/else 结构: 将代码转换为美丽、惯用的 Python

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接