Python開發基礎 day10 內置函數 匿名函數 遞歸
阿新 • • 發佈:2017-06-20
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 內置函數 匿名函數 遞歸