lambda的一般形式是關鍵字lambda,之後是乙個或多個引數,緊跟著是乙個冒號,之後是表示式
lambda
*args : expression using arguments
相當於
def
(*args)
:return expression using arguments
lambda是乙個表示式,而不是乙個語句
作為乙個表示式,lambda返回值是乙個新函式,可以選擇性的賦值給乙個變數,相反,def語句總是在頭部將乙個新的函式賦值給乙個變數,而不是將這個函式作為結果返回
def與lambda相同的用法
x =
lambda x, y, z: x + y + zx(1
,2,3
)>>
>
9y =
(lambda a=
'hello'
,b='world'
:a+b)y()
>>
>helloworld
lambda起到一種函式的速寫作用,允許在使用的**內嵌乙個函式的定義,它會到來乙個更簡潔的書寫效果。
lambda通常用來編寫跳轉表,也就是行為的列表或者字典,能夠按照需求執行操作,比如:
list_ =
[lambda x: x**2,
lambda x : x**3,
lambda x : x**4]
for i in list_:
print
(i(2))
>>
>
4>>
>
8>>
>
16print
(list_[0]
(3))
>>
>
9
同等與
def
f1(x)
:return x **
2def
f2(x)
:return x **
3def
f3(x)
:return x **
4list_ =
[f1, f2, f3]
for i in list_:
print
(i(2))
print
(list_[0]
(3))
lambda中實現if-else
lower =
lambda x,y:x if xlower(4,
5)>>
>
4
lambda表示式與map,filter,reduce
map()
map() 會根據提供的函式對指定序列做對映。
第乙個引數 function 以引數序列中的每乙個元素呼叫 function 函式,返回包含每次 function 函式返回值的新列表。
舉個例子,我們有乙個列表,需要將列表的每乙個欄位+10
list_show =[1
,2,3
,4]# 方式1
new_list_show =
for i in list_show:10)
print
(new_list_show)
# 方式2
defadds
(x):
return x +
10print
(list
(map
(adds, list_show)))
# 更優雅的方式3:
print
(list
(map
(lambda x: x +
10, list_show)
))
filter()
filter(),用於資料的過濾操作
舉個例子,過濾0-9中,能被2整除的數字組成乙個列表
print
(list
(filter
(lambda x: x%2==
0,range(10
))))
>>
>[0
,2,4
,6,8
]
reduce()
reduce() 函式會對引數序列中元素進行累積。
函式將乙個資料集合(鍊錶,元組等)中的所有資料進行下列操作:用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到乙個結果。
>>
>
def add(x, y)
:# 兩數相加..
.return x + y..
.>>
>
reduce
(add,[1
,2,3
,4,5
])# 計算列表和:1+2+3+4+5
15>>
>
reduce
(lambda x, y: x+y,[1
,2,3
,4,5
])# 使用 lambda 匿名函式
15
lambda匿名函式
匿名函式 lambda函式是一種快速定義單行的最小函式,是從lisp借用來的,可以用在任何需要函式的地方。def f x,y return x y g lambda x,y x y g 2,3 優點 1 使用python寫一些執行的指令碼時,使用lambda可以省去定義函式的過程,讓 更精簡 2 對...
lambda匿名函式
lambda語句中,冒號前argumes是引數,可以有多個,可以用逗號隔開或其他形式,冒號右邊的是表示式,並將其結果返回。示例 f lambda x,y x y print f 2,3 6myadd lambda args sum args result myadd 1,3,4 print resu...
匿名函式lambda
在python中有個匿名函式特性非常的便捷和有用,用關鍵字lambda就可以宣告乙個匿名函式,所以很多時候直接稱呼為lambda函式。每次介紹新特性的時候,我們都要反問什麼是lambda函式呢?因為又叫匿名函式,所以是指沒有宣告函式名稱的函式,它和平時我們定義普通函式使用def關鍵字不同,lamda...