三元表示式符合python語法的表達方式(形式,公式)稱之為表示式
三元:三個元素
總體:由三個元素組成的表示式
其目的是為了簡化書寫,既然是簡化就必然有侷限性
三元表示式只能幫你簡化僅有兩個分支的if判斷,並且這個判斷無論成立與否都必須返回乙個值
遞迴指的是遞迴呼叫,簡單的說就是乙個函式在執行過程中又直接或間接的呼叫該函式本身
遞迴時可能出現以下錯誤:
在呼叫函式時超出了最大遞迴深度
python為了防止遞迴太多導致記憶體溢位,所以給遞迴呼叫加上了深度(次數)限制,預設為1000
當呼叫函式時會將函式的**儲存帶棧區然後開始執行,這個過程稱之為入棧
遞迴呼叫本質上就是在迴圈執行**,與普通迴圈不同的是,函式呼叫會產生一系列記憶體開銷,所以就會導致記憶體溢位
而迴圈則沒有這個問題
如此一來,則表示所有遞迴能幹的事情迴圈都能幹
在使用遞迴時要注意:
1.一定要在某個條件滿足時結束迴圈呼叫
2.迴圈呼叫的次數不能超過系統的限制
3.每一次執行函式都應該使問題的規模減少,否則就是無用的迴圈
4.python中沒有尾遞迴優化機制(使得遞迴呼叫時占用的開銷更小)
在使用遞迴完成遍歷所有元素(不知道有幾層)時,可以發現,遞迴使用起來**量更少,並且**結構更加清晰
什麼時候該使用遞迴:
你不知道到底要迴圈幾次
遞迴之二份查詢法
二分查詢法
分班查詢
折半查詢
先將整體分為兩半
然後取出中間元素,與你要查詢的目標進行比對,如果你要找的比中間值大請走右邊
如果你要找的比中間值小請走左邊
1.先得到乙個中間值,比較是不是你要找的,如果是直接返回
2.如果不是 那就吧列表拆為兩半,進行比較
3.如果你要找的比中間值大找右邊
如果你要找的比中間值小找左邊
匿名函式
匿名值的就是沒有名字
其最明細的特點就是,
有名字的值可以多次使用,多次訪問
而沒有名字的值,只能臨時使用一次,用完就沒了
匿名函式與有名函式的區別
關鍵字為lambda
引數不需要括號,並且支援所有型別的引數
命名空間與作用域關係完全相同
關鍵字lambda
函式體中不能寫return,會自動將執行結果返回
函式體只能有乙個表示式且不能換行
匿名函式什麼時候使用:
當你的函式的函式體只有一行表示式時並且僅使用一次時就可以作為匿名函式
更多的是與內建函式聯用(max,min,sorted,map,fileter,reduce)
當預設的比較方式無法滿足需求時,就可以通過傳入乙個函式來決定用什麼比較
map 對映 filter 過濾 reduce合併
map 用於從乙個可迭代物件中取出所有資料,進行一系列操作後 在放回新列表中
filter 用於從一堆資料中過濾一些不滿足條件的資料,提供乙個函式,要函式的返回值是bool型別 true表示要保留,false就過濾掉
從functools中拿到乙個reduce
reduce 是把列表中的資料進行合併 每次會傳給你兩個值n和n+1
三元表示式 遞迴 匿名函式
三元表示式 符合python語法的表達方式 形式,公式 元素,三個元素 總體就是,由三個元素組成的表示式 其目的是為了簡化書寫,既然是簡化就必然有侷限性,三元表示式只能幫你簡化僅有兩個分支if判斷 res true if age 18 else false,並且這個判斷無論成立與否都必須返回乙個值 ...
函式遞迴 三元表示式 匿名函式 函式內建方法
遞迴函式 定義 任何函式在呼叫自己的情況下 就叫遞迴 函式在呼叫的時候可以直接性或者間接性的呼叫自己.但是他不能無限制的呼叫下去 也不應該無限制的呼叫下去 遞迴分為兩個階段,遞推和 回溯 回溯就像while迴圈一樣一直重複下去 但是每一次重複 都要建立在上一次迴圈的基礎上 減小目標難度 遞迴的回溯 ...
三元表示式 生成式 匿名函式
def max2 x,y if x y return x else return y res max2 10,20 x 10 y 20 res x if x y else y print res res ok if false else no print res 1 列表生成式 l for i in...