lambda匿名函式

2021-10-01 04:08:13 字數 2806 閱讀 7551

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...