国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 在Python的循環體中使用else語句的方法

在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:
      # raise error or do additional processing

    沒有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:
      # raise error or do additional processing

    這不是一個真正重要的東西,而在許多其他語言中你必須要如此做。但是類似Python的許多其他特性,else語句可以生成更加優雅的Python風格的(Pythonic)代碼。毫無疑問,上面的例子中,使用else語句使得代碼更加The Zen of Python友好:

    這并不是說你不得不在循環中使用else語句,你總是可以使用標志等等。但是else語句常??梢允勾a更加優雅、更具可讀性。你可能認為這樣Pythonic,而且使意圖更加清楚(嗨!),然而其他人可能認為這樣有迷惑性,而且冗余!個人來說,我堅持在循環中使用else語句,除非存在另一個更具可讀性的方法(我想,對我來說,代碼的可讀性是最重要的)。

    延伸 · 閱讀

    精彩推薦
    主站蜘蛛池模板: 成人亚洲 | 亚洲三级在线免费观看 | 国产精品视频入口 | 成人av网页 | 日韩成人免费 | 激情欧美一区二区三区中文字幕 | www中文字幕| 日韩午夜影院 | 欧美精品在线一区二区 | 在线观看日韩av | 日本不卡高字幕在线2019 | 欧美日韩一区二区视频在线观看 | 欧美一区二区在线视频 | 狠狠操狠狠干 | 久久精品国产一区 | 精品久 | 亚洲福利一区二区 | 免费观看黄色av网站 | 99青青草 | 欧美精品一区二区三区在线播放 | 综合另类| 国产高清在线精品一区二区三区 | 中文字幕综合在线 | 久久99精品久久久久久6194 | 在线观看日韩av | 国产精品久久久久久婷婷天堂 | 最新高清无码专区 | 欧美日韩成人一区二区 | 国产99精品 | 三级av在线 | 九九热精品在线 | 欧美精品一区二区三区四区 | 国产目拍亚洲精品99久久精品 | 狠狠色噜噜狠狠狠8888米奇 | 日韩中文一区 | 一本久久a久久精品亚洲 | 国产精品视频久久 | 久久精品美女 | 午夜激情视频在线观看 | baoyu123成人免费看视频 | 欧美成人精精品一区二区频 |
    <abbr id="rardr"><style id="rardr"></style></abbr>
        <label id="rardr"><style id="rardr"><acronym id="rardr"></acronym></style></label>