1. 程式人生 > >Python開發基礎 day10 內置函數 匿名函數 遞歸

Python開發基礎 day10 內置函數 匿名函數 遞歸

return 如果 price dex pre 條件 匿名函數 lam 遞歸函數

匿名函數lambda

匿名函數:lambda x,y:x+y

上述解釋:x,y分別是函數的參數,x+y是函數的返回值

匿名函數的命名規則,用lamdba 關鍵字標識,冒號(:)左側表示函數接收的參數(a,b) ,冒號(:)右側表示函數的返回值(a+b)。

  因為lamdba在創建時不需要命名,所以叫匿名函數

等同於普通函數:

1 2 def test(x,y): return x+y

匿名函數只是沒有函數名,主要是配合內置函數使用

示例1:

1 2 3 4 5 6 7 8 9 10 # filter##過濾(將布爾值為True的結果過濾出來)
name_l=[{"name":"tom","age":222}, {"name": "alex", "age": 333}, {"name": "jack", "age": 133}, {"name": "sun", "age": 363}, ] # 使用匿名函數 res=filter(lambda d:d["age"]>200,name_l) for i in res: print(i)

執行結果是:

1 2 3 {‘name‘: ‘tom‘, ‘age‘: 222} {‘name‘: ‘alex‘
, ‘age‘: 333} {‘name‘: ‘sun‘, ‘age‘: 363}

示例2:

#map# 合並映射
1 2 3 l=[1,2,3,4,5] res=map(lambda x:x**2,l)#求平列表裏的平方值,並以列表的方式呈現 print(list(res))

執行結果是:

1 [1, 4, 9, 16, 25]

  

遞歸函數:

定義:在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞歸函數。

遞歸函數的優點: 簡單,邏輯清晰。理論上,所有的遞歸函數都可以寫成循環的方式,但循環的邏輯不如遞歸清晰。

遞歸特性:

1. 必須有一個明確的結束條件

2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少

3. 遞歸效率不高,遞歸層次過多會導致棧溢出(在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出。)

示例:

1 2 3 4 5 6 def price(n): if n==1: return 100 else: return price(n-1)+100#在函數內部調用自身 print(price(5))

執行結果是:

1 500

Python開發基礎 day10 內置函數 匿名函數 遞歸