Python中“for”循环之后的“else”有啥用? [复制]

Posted

技术标签:

【中文标题】Python中“for”循环之后的“else”有啥用? [复制]【英文标题】:What is the use of "else" after "for" loop in Python? [duplicate]Python中“for”循环之后的“else”有什么用? [复制] 【发布时间】:2014-06-30 18:27:52 【问题描述】:

看来下面两个代码打印的一样,那么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"

提前致谢。

【问题讨论】:

【参考方案1】:

From the documentation:

循环语句可能有一个else 子句;它在循环因列表耗尽而终止时(使用 for)或条件变为假(使用 while)时执行,但不是在循环由 break 语句终止时执行。

点击链接查看如何使用它的示例。

【讨论】:

【参考方案2】:

elsefor 之后执行,提供 for 没有以break 终止:

 for i in range(10):
    print i

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

【讨论】:

当范围为空时(即根本不执行循环体)会发生什么? @AaronDigulla 然后无法访问break。所以循环就像没有break, else一样。 @Aaron Digulla: "else" 将被执行,因为 "for" 没有被打断【参考方案3】:

这最初是为了在不使用标志的情况下摆脱过程中的所有“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,http://pyvideo.org/video/1780/transforming-code-into-beautiful-idiomatic-pytho

【讨论】:

以上是关于Python中“for”循环之后的“else”有啥用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python中for或while块末尾的“else”有啥用? [复制]

Python的for循环退出

C++ 中是不是有与“for ... else”Python 循环等效的方法?

Python中for循环搭配else的陷阱

Python中for循环搭配else的陷阱

python 双层for循环,在第二层的for循环中的else中的continue,会退出到第一层for循环继续执行