Python中lambda 函式詳解與運用

2021-10-07 01:36:56 字數 3994 閱讀 3665

python中有一種靈活,便捷的且具有函式功能的表示式:lambda表示式!

lambda表示式,又稱匿名函式,是現代各種程式語言爭相引入的一種語法,其功能堪比函式,設計卻比函式簡潔。

lambda [parameter_list] : expression

根據其語法格式可以得到lambda 表示式的兩個要點:

[parameter_list]是引數列表,它的結構與 python 中函式(function)的引數列表是一樣的。並且可以有多種形式,以下是參考形式。

a, ba=1

, b=

2*args

**kwargs

a, b=1,

*args

空#包括但不限於以上

expression是乙個引數表示式,表示式**現的引數需要在[parameter_list]中有定義,並且表示式只能是單行的,只能有乙個表示式。以下是合法的表示式:

6

none

a + b

sum(b)

6if a >

10else

7#包括但不限於以上

常見的lambda函式示例:

lambda x, y: x+y			# 函式輸入是x和y,輸出是它們的和x+y

lambda

:none

# 函式沒有輸入引數,輸出是none

lambda

*args:

sum(args)

# 輸入是任意個數引數,輸出是它們的和(隱性要求輸入引數必須能進行算術運算)

lambda

**kwargs:

6# 輸入是任意鍵值對引數,輸出是6

a =

lambda x, y: x + y

print

(a(6,7

))#結果 13

print

(sum([

6,7]

))sum=

lambda x:

none

print

(sum([

6,7]

))#結果 13

#結果 none

num =[(

1,2.9),(

1.5,

3.2),(

1.3,

4.0),(

2.2,

2.8)

]y =

max(num, key=

lambda x: x[0]

)print

(y)#結果 (2.2, 2.8)

num =[(

1,2.9),(

1.5,

3.2),(

1.3,

4.0),(

2.2,

2.8)

]y =

max(num, key=

lambda x: x[1]

)print

(y)#結果 (1.3, 4.0)

min()函式同理

#python3.x

num =[1

,2,3

,4,5

]print

(list

(map

(lambda x: x **

2, num)))

#結果 [1, 4, 9, 16, 25]

num1 =[1

,2,3

,4,5

]num2 =[6

,7,8

,9,10

]print

(list

(map

(lambda x, y: x + y, num1, num2)))

#結果 [7, 9, 11, 13, 15]

from functools import

reduce

defadd

(x, y)

:# 兩數相加

return x + y

a =reduce

(add,[1

,2,3

,4,5

])# 計算列表和:1+2+3+4+5

print

(a)#結果 15

b =reduce

(lambda x, y: x+y,[1

,2,3

,4,5

])# 使用 lambda 匿名函式

print

(b)#結果 15

a =[1

,7,8

,3,4

,1,2

]b =

sorted

(a)# 使用sorted,保留原列表,不改變列表a的值

print

(a)#結果 [1, 7, 8, 3, 4, 1, 2]

print

(b)#結果[1, 1, 2, 3, 4, 7, 8]

l =[11

,5,0

,6,1

,2,7

,3,4

,-3]

l.sort(

)print

(l)#結果 [-3, 0, 1, 2, 3, 4, 5, 6, 7, 11]

a =4

print

(sorted

(l, key=

lambda x:

abs(x - a)))

#按l列表所有元素對a作差的絕對值大小進行對l列表排序,預設公升序

#結果 [4, 3, 5, 2, 6, 1, 7, 0, -3, 11]

print

(sorted

(l, key =

lambda x:

abs(x - a)

, reverse=

true))

#此為降序

#結果[-3, 11, 0, 1, 7, 2, 6, 3, 5, 4]

students =[(

'j',

'a',15)

,('j1'

,'b',12

),('j2'

,'b',10

)]print

(sorted

(students, key=

lambda s: s[2]

))#按第三維s[2]進行排序

#結果 [('j2', 'b', 10), ('j1', 'b', 12), ('j', 'a', 15)]

#過濾出列表中的所有奇數

defis_odd

(n):

return n %2==

1tmplist =

filter

(is_odd,[1

,2,3

,4,5

,6,7

,8,9

,10])

newlist =

list

(tmplist)

print

(newlist)

#結果 [1, 3, 5, 7, 9]

# 將列表a中能夠被3整除的元素過濾出來

a =[1,

2,3,

9,11,

8,6,

10]newlist1 =

filter

(lambda x: x %3==

0, a)

print

(list

(newlist1)

)#結果 [3, 9, 6]

python中的lambda函式

lambda函式也叫匿名函式,即,函式沒有具體的名稱。先來看乙個最簡單例子 deff x returnx 2printf 4 python中使用lambda的話,寫成這樣 g lambdax x 2printg 4 lambda表示式在很多程式語言都有對應的實現。比如c varg x x 2cons...

python中的lambda函式

今天學習python裡面的高階函式map f list 的時候看見這樣一行 print map lambda x x 3,range 6 我已經知道 map函式的首個引數是乙個函式,後面的乙個或者多個list or tuple作為第乙個引數 也就是那個函式 的引數,以map的方式遍歷執行,並返回乙個...

Python中的lambda函式

python中的lambda函式 在python中,我們使用lambda關鍵字來宣告乙個匿名函式,這就是為什麼我們將它們稱為 lambda函式 匿名函式是指沒有宣告函式名稱的函式。儘管它們在語法上看起來不同,lambda函式的行為方式與使用def關鍵字宣告的一般函式相同。以下是python中 lam...