在Python的循環體中使用else語句的方法
2020-05-26 09:54Shahriar Tajbakhsh Python
這篇文章主要介紹了在Python的循環體中使用else語句的方法,else語句的使用在各種語言的學習當中均為基本功、本文中主要介紹其在for循環中的應用,需要的朋友可以參考下
本文討論Python的for…else和while…else語法,這是Python中最不常用、最為誤解的語法特性之一。
Python中的for、while循環都有一個可選的else分支(類似if語句和try語句那樣),在循環迭代正常完成之后執行。換句話說,如果我們不是以除正常方式以外的其他任意方式退出循環,那么else分支將被執行。也就是在循環體內沒有break語句、沒有return語句,或者沒有異常出現。考慮一個簡單的(無用的)例子:
?
1
2
3
4
5
6
7
8
9
10
11
|
>>> for i in range ( 5 ):
... print (i)
... else :
... print ( 'Iterated over everything <img src="http://python.jobbole.com/wp-includes/images/smilies/icon_smile.gif" id="codetool">
上面的代碼中,我們在range(5)上迭代并打印每個數字。因為我們讓循環正常完成,所以else分支也被執行,并打印出Iterated over everything :) 。相反,如果我們用break語句終止循環,那么else分支將不會執行:
?
1
2
3
4
5
6
7
8
9
|
>>> for i in range ( 5 ):
... if i = = 2 :
... break
... print (i)
... else :
... print ( 'Iterated over everything <img src="http://python.jobbole.com/wp-includes/images/smilies/icon_smile.gif" id="codetool">
注意,盡管循環所迭代的序列是空的,else分支依然會被執行,畢竟循環仍然是正常完成的。
?
1
2
3
4
5
6
|
>>> for i in []:
... print (i)
... else :
... print ( 'Still iterated over everything (i.e. nothing)' )
...
Still iterated over everything (i.e. nothing)
|
同樣不要忘記,以上所有也適應于while…else:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> i = 0
>>> while i < = 5 :
... i + = 1
... print i
... else :
... print 'Yep'
...
1
2
3
4
5
Yep
|
但是,為什么呢!?
else語句在循環中的一個常見使用案例是實現循環查找。假說你在查找一個滿足特定條件的項目(item),同時需要進行附加處理,或者在未發現可接受的值時生成一個錯誤:
?
1
2
3
4
5
|
for x in data:
if meets_condition(x):
break
else :
|
沒有else語句的話,你需要設置一個標志,然后在后面對其檢測,以此確定是否存在滿足條件的值。
?
1
2
3
4
5
6
7
|
condition_is_met = False
for x in data:
if meets_condition(x):
condition_is_met = True
if not condition_is_met:
|
這不是一個真正重要的東西,而在許多其他語言中你必須要如此做。但是類似Python的許多其他特性,else語句可以生成更加優雅的Python風格的(Pythonic)代碼。毫無疑問,上面的例子中,使用else語句使得代碼更加The Zen of Python友好:
這并不是說你不得不在循環中使用else語句,你總是可以使用標志等等。但是else語句常??梢允勾a更加優雅、更具可讀性。你可能認為這樣Pythonic,而且使意圖更加清楚(嗨!),然而其他人可能認為這樣有迷惑性,而且冗余!個人來說,我堅持在循環中使用else語句,除非存在另一個更具可讀性的方法(我想,對我來說,代碼的可讀性是最重要的)。
- Python
這篇文章主要介紹了Python模擬脈沖星偽信號頻率實例代碼,具有一定借鑒價值,需要的朋友可以參考下...
9322020-12-31
- Python
今天小編就為大家分享一篇tensorflow: variable的值與variable.read_value()的值區別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...
10182021-03-23
- Python
這篇文章主要介紹了Python實現的批量修改文件后綴名操作,涉及Python目錄文件的遍歷、重命名等相關操作技巧,需要的朋友可以參考下...
7182021-04-26
- Python
這篇文章主要介紹了python連接mysql數據庫并讀取數據的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...
17822020-09-26
- Python
下面小編就為大家分享一篇使用pygame模塊編寫貪吃蛇的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...
10902021-01-12
- Python
這篇文章主要介紹了Python裝飾器模式定義與用法,結合實例形式分析了Python裝飾器模式的具體定義、使用方法及相關操作技巧,需要的朋友可以參考下...
6362021-03-26
- Python
今天小編就為大家分享一篇python 獲取微信好友列表的方法(微信web),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...
11382021-05-31
- Python
這篇文章主要為大家詳細介紹了python實現k-means聚類算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下...
7422021-01-16
主站蜘蛛池模板:
成人亚洲
|
亚洲三级在线免费观看
|
国产精品视频入口
|
成人av网页
|
日韩成人免费
|
激情欧美一区二区三区中文字幕
|
www中文字幕|
日韩午夜影院
|
欧美精品在线一区二区
|
在线观看日韩av
|
日本不卡高字幕在线2019
|
欧美日韩一区二区视频在线观看
|
欧美一区二区在线视频
|
狠狠操狠狠干
|
久久精品国产一区
|
精品久
|
亚洲福利一区二区
|
免费观看黄色av网站
|
99青青草
|
欧美精品一区二区三区在线播放
|
综合另类|
国产高清在线精品一区二区三区
|
中文字幕综合在线
|
久久99精品久久久久久6194
|
在线观看日韩av
|
国产精品久久久久久婷婷天堂
|
最新高清无码专区
|
欧美日韩成人一区二区
|
国产99精品
|
三级av在线
|
九九热精品在线
|
欧美精品一区二区三区四区
|
国产目拍亚洲精品99久久精品
|
狠狠色噜噜狠狠狠8888米奇
|
日韩中文一区
|
一本久久a久久精品亚洲
|
国产精品视频久久
|
久久精品美女
|
午夜激情视频在线观看
|
baoyu123成人免费看视频
|
欧美成人精精品一区二区频
|
| |