1. 程式人生 > >Python - 匿名函數

Python - 匿名函數

pan 其他 end port 指定 init lambda strong 空間使用

本章內容

  1. 匿名函數lambda
  2. 匿名函數運用

一、匿名函數lambda

我們所說的匿名函數就是lambda , lambda到底是什麽?

lambda是一個表達式 , 而並非語句 , 所以可以出現在def語句所不能出現的位置 , 並且不需要指定函數名; lambda表達式還可以提高代碼的可讀性 , 簡化代碼

lambda表達式主要用於寫一些簡單的方法 , 對於復雜的還是用函數寫的好

示例:

 1 # 普通函數
 2 def func(x):
 3     return x * x
 4 print(func(5))
 5 -----------------------
 6
# 匿名函數,自帶return功能 7 func = lambda x : x * x 8 print(func(5)) 9 --------------------------------------------------- 10 func = lambda arguments : expression using argument

使用匿名函數可以減少命名空間使用內存 , 因為沒有函數名

可直接後面傳遞參數

1 >>> (lambda x,y : x if x > y else y)(1,2)
2 2

非固定參數

1 >>> (lambda
*args : args)(1,2,3,4) 2 (1, 2, 3, 4)

PS : 匿名函數主要是與其他函數搭配使用

二、匿名函數運用

結合使用

map , 計算平方

1 # map後返回的對象為map對象,所以利用list方法進行強轉
2 >>> list(map(lambda x : x * x, [1,2,3,4]))
3 [1,4,9,16]

filter , 篩選偶數

1 >>> list(filter(lambda x : x % 2 == 0,[1,2,3,4]))
2 [2,4]

reduce , 求和

1 # python3中已經沒有reduce方法了,調用需要導入
2 >>> from functools import reduce
3 # reduce(function, sequence, initial=None)
4 >>> reduce(lambda x , y : x + y, [1,2,3,4,5],100)
5 115

嵌套使用

版本一

1 def func(x):
2     return lambda x : x + y
3 f = func(2)
4 print(f(2))
5 # output: 4

版本二

1 func = lambda x : (lambda y: x + y)
2 y = func(1)
3 y(2)
4 # output: 3

Python - 匿名函數