語句: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
結束/打斷當前迴圈(常在for
、while
)然後跳到下條語句, 若迴圈中有else
也會被跳過
continue
終止當前迴圈, 忽略剩餘語句,回到迴圈頂端(如果滿足先決條件)
迭代器(建立用iter()
)為類序列物件提供了乙個類序列的介面,還可以迭代不是序列但表現出序列行為的物件(字典的鍵, 檔案的行)
迭代器好處:
可拓展介面 效能提公升 迭代非序列集合時可以建立更簡潔的**
限制:不能向後移動、不能複製(只能建立新的)
檔案物件生成的迭代器會自動呼叫readline()
方法
如果在迭代時改變了元素(因為迭代器是與實際物件繫結在一起的),會報runtimeerror
如果傳遞兩個引數給iter(func, sentinel)
,它會重複呼叫第乙個引數func
,直至迭代器下乙個值是第二個引數sentinel
列表解析可以簡化類似lambda
、map
的函式(減少了函式呼叫次數),支援多重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...