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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

學(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(),都是每次只取出一個元素。技巧性更強的是一次取出兩個元素,尤其以字典為例:

>>> 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)的值同時取出。不僅是字典,當在序列(list, tuple, range)中循環(huán)時,用 enumerate() 函數(shù)可以將索引位置和其對應(yīng)的值同時取出,用法如下:

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

還有更強的用法,用到昨天講到的zip()函數(shù)。當同時在兩個或更多序列中循環(huán)時,可以用 zip() 函數(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)一個序列時,應(yīng)該先正向定位序列,然后調(diào)用 reversed() 函數(shù):

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

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

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

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

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

總結(jié)

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

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