Python循环中的else语句
绝大部分编程语言中都有条件判断语句,比如 if … else ,在大部语言中,else 一般只在条件判断语句中出现,与 if 语句配套出现,不过在 Python 中,else 除了能与 if 这样的条件判断一起出现外,还能出现在 for、while 这样的循环语句中。
我们来看一个例子:
1
2
3
4
5
6
7
8
9
10
|
s = [ "a111" , "b222" , "c333" , "d444" , "e555" ] found = False for c in s: if c.startswith( "c" ): found = True print u "发现以字母c开头的项" break if not found: print u "没有发现以字母c开头的项" |
做一次循环,如果发现满足条件的字母则打印出提示信息,循环完了还没有发现则打印出另一条信息。我们需要设置一个额外的变量来记录是否找到了目标字符(程序中的 found 变量),在循环完成之后再做一个 if 判断。
上面的写法当然是可以的,不过如果我们使用循环中的 else 语句的话,代码会更简洁清晰。比如:
1
2
3
4
5
6
7
|
s = [ "a111" , "b222" , "c333" , "d444" , "e555" ] for c in s: if c.startswith( "c" ): print u "发现以字母c开头的项" break else : print u "没有发现以字母c开头的项" |
在这儿,记录是否找到的额外的变量不需要了,也不再需要在循环完成后再进行 if 判断,但达到的效果和第一段代码是一样的。
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样
如果使用continue替换break,效果则是:else里的语句肯定会被执行,有些场合也是一个有意思的用法