Python隨學隨記(4) 條件和迴圈

2021-07-15 21:03:41 字數 1940 閱讀 4190

語句:if else elif while for break continue pass懸掛else問題:在c中else與最近的if搭配,就會容易產生問題,而python中因為強制縮排, 所以不會有這問題

elif常可以用序列和成員關係符進行簡化(更優雅:利用字典)

使用對映物件的乙個最大好處是它的搜尋操作比類似if-elif-else語句或for迴圈這樣的序列查詢要快得多三元操作符:val1 if cond else val2通過序列索引迭代(速度沒直接迭代快):for index in range(len(namelist))同時用項和索引迭代:enumerate()迭代器:支援迭代的方法,裡面的next()方法返回下乙個條目,當迭代完成會引發乙個stopiteration異常並**獲 (for迴圈自動呼叫)

range()的完整引數:range(start, end, step),step預設為1

在for中用xrange()效能要優於range(),它不會在記憶體裡建立列表的完整拷貝(不生成整個列表),型別為xrange易混點:sorted()zip()返回的是列表,reversed()enumerate()返回的是乙個迭代器break結束/打斷當前迴圈(常在forwhile)然後跳到下條語句, 若迴圈中有else也會被跳過

continue終止當前迴圈, 忽略剩餘語句,回到迴圈頂端(如果滿足先決條件)

迭代器(建立用iter())為類序列物件提供了乙個類序列的介面,還可以迭代不是序列但表現出序列行為的物件(字典的鍵, 檔案的行)

迭代器好處:

可拓展介面 效能提公升 迭代非序列集合時可以建立更簡潔的**

限制:不能向後移動、不能複製(只能建立新的)

檔案物件生成的迭代器會自動呼叫readline()方法

如果在迭代時改變了元素(因為迭代器是與實際物件繫結在一起的),會報runtimeerror如果傳遞兩個引數給iter(func, sentinel),它會重複呼叫第乙個引數func,直至迭代器下乙個值是第二個引數sentinel列表解析可以簡化類似lambdamap的函式(減少了函式呼叫次數),支援多重for巢狀和多個if子句

列表解析例項:矩陣、生成三維座標(多個for時:最後的for相當於外迴圈)、磁碟檔案字元計數

列表解析的不足:必須生成所有資料,用以建立整個列表;結合生成器可以解決此問題

生成器:語法和列表解析基本相同(換為()),但不真正建立數字列表, 而是返回乙個生成器(每次計算出乙個條目後再yield出來,相當於惰性列表解析)

python學習(4)條件判斷

if 條件判斷1 執行1 elif 條件判斷2 執行2 elif 條件判斷3 執行3 else 執行4 相對於c,不需要在if後加括號,但是需要在條件後面加冒號,else後面也要加。其次是else if變為了elif 這是因為input 返回的資料型別是str,str不能直接和整數比較,必須先把st...

Python 演算法實現 4 條件互換

互換函式 swap 是將兩個數字進行互換,確保較小的數字在前,較大的數字在後,一般寫法如下 def swap a,b if a b return b,a else return a,b num1,num2 swap 3,4 num3,num4 swap 5,4 print num1,num2 pri...

Python開發的入門教程 三 條件判斷和迴圈

本文主要介紹python中條件判斷和迴圈的基本知識和使用 計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。比如,輸入使用者年齡,根據年齡列印不同的內容,在python程式中,可以用if語句實現 age 20 if age 18 print your age is age print ad...