日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

每天一小时python官方文档学习(六)————循环和条件控制的进阶用法

發(fā)布時(shí)間:2023/12/4 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天一小时python官方文档学习(六)————循环和条件控制的进阶用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)完數(shù)據(jù)結(jié)構(gòu)之后,我們就能夠?qū)χ霸诘诙熘兄v過的流程控制工具,添加更多的用法了,這里主要介紹的是for循環(huán)語句和if與while條件判斷語句。

5.6. 循環(huán)的技巧

我們學(xué)過的遍歷序列for i in range() 、for i in list() 和 for i in tuple(),都是每次只取出一個(gè)元素。技巧性更強(qiáng)的是一次取出兩個(gè)元素,尤其以字典為例:

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'} >>> for k, v in knights.items(): ... print(k, v) ... gallahad the pure robin the brave

在字典中循環(huán),用 items() 方法可將關(guān)鍵字對應(yīng)的值同時(shí)取出。不僅是字典,當(dāng)在序列(list, tuple, range)中循環(huán)時(shí),用 enumerate() 函數(shù)可以將索引位置和其對應(yīng)的值同時(shí)取出,用法如下:

>>> for i, v in enumerate(['tic', 'tac', 'toe']): ... print(i, v) ... 0 tic 1 tac 2 toe

還有更強(qiáng)的用法,用到昨天講到的zip()函數(shù)。當(dāng)同時(shí)在兩個(gè)或更多序列中循環(huán)時(shí),可以用 zip() 函數(shù)將每個(gè)序列中的元素按位置逐一進(jìn)行匹配。如下例就實(shí)現(xiàn)了問題和回答的匹配:

>>> questions = ['name', 'quest', 'favorite color'] >>> answers = ['lancelot', 'the holy grail', 'blue'] >>> for q, a in zip(questions, answers): ... print('What is your {0}? It is {1}.'.format(q, a)) ... What is your name? It is lancelot. What is your quest? It is the holy grail. What is your favorite color? It is blue.

接下來是一些針對序列循環(huán)的小技巧,如果想逆向循環(huán)一個(gè)序列時(shí),應(yīng)該先正向定位序列,然后調(diào)用 reversed() 函數(shù):

>>> for i in reversed(range(1, 10, 2)): ... print(i) ... 9 7 5 3 1

如果要按某個(gè)指定順序循環(huán)一個(gè)序列,可以用 sorted() 函數(shù),即先排序再循環(huán)。之所以用sorted()而不用.sort(),是因?yàn)閟orted()可以在不改動(dòng)原序列的基礎(chǔ)上返回一個(gè)新的排好序的序列,而.sort()會(huì)對原序列本身進(jìn)行排序。如下例就是對集合中的單詞按照首字母從小到大的順序進(jìn)行循環(huán):

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] >>> for f in sorted(set(basket)): ... print(f) ... apple banana orange pear

有時(shí)可能會(huì)想在循環(huán)時(shí)修改列表內(nèi)容,一般來說改為創(chuàng)建一個(gè)新列表是比較簡單且安全的。如下例就是把列表中的NaN去掉:

>>> import math >>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8] >>> filtered_data = [] >>> for value in raw_data: ... if not math.isnan(value): ... filtered_data.append(value) ... >>> filtered_data [56.2, 51.7, 55.3, 52.5, 47.8]

5.7. 深入條件控制

在while 和 if 條件句中,除了常見的> < >= <= ==這些比較操作以外,其他任意操作也是允許的,這里主要講解一些常用的操作和原則:

  • 操作符 in 和 not in 可以校驗(yàn)一個(gè)值是否在(或不在)一個(gè)序列里。
  • 操作符 is 和 is not比較兩個(gè)對象是不是同一個(gè)對象,這只對像列表這樣的可變對象比較重要。注意它們是根據(jù)id進(jìn)行比較的,不同id的列表即使內(nèi)容相同is也會(huì)返回False;而與之對應(yīng)的,==是根據(jù)值進(jìn)行比較,只要內(nèi)容相同==就會(huì)返回True。
  • 所有的比較操作符都有相同的優(yōu)先級,且這個(gè)優(yōu)先級比數(shù)值運(yùn)算符低
  • 比較操作可以傳遞。例如 a < b == c 會(huì)校驗(yàn)是否 a 小于 b 并且 b 等于 c。
  • 比較操作可以通過布爾運(yùn)算符 and 和 or 來組合,并且比較操作(或其他任何布爾運(yùn)算)的結(jié)果都可以用 not來取反。這些操作符的優(yōu)先級低于比較操作符;在它們之中,not 優(yōu)先級最高, or 優(yōu)先級最低,因此 A and not B or C等價(jià)于 (A and (not B)) or C。和之前一樣,你也可以在這種式子里使用圓括號。
  • 布爾運(yùn)算符 and 和 or 也被稱為短路運(yùn)算符:它們的參數(shù)從左至右解析一旦可以確定結(jié)果解析就會(huì)停止。例如,如果 A 和 C 為True而 B 為False,那么 A and B and C 不會(huì)解析 C,而直接返回False。當(dāng)用作普通值而非布爾值時(shí),短路操作符的返回值通常是最后一個(gè)變量,例如:
>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance' >>> non_null = string1 or string2 or string3 >>> non_null 'Trondheim'

string1空字符串相當(dāng)于False,而string2為True,故直接短路,表達(dá)式返回string2賦給non_null。

總結(jié)

以上是生活随笔為你收集整理的每天一小时python官方文档学习(六)————循环和条件控制的进阶用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。