python中有一種靈活,便捷的且具有函式功能的表示式:lambda表示式!lambda [parameter_list] : expressionlambda表示式,又稱匿名函式,是現代各種程式語言爭相引入的一種語法,其功能堪比函式,設計卻比函式簡潔。
根據其語法格式可以得到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...