lambda

lambda 參數列表:表達式

lambda x:x**2

(lambda x : x ** 2)(4)  #調用

 

參數列表不需要小括號

冒號是用來分割參數列表和表達式的

不需要return,表達式的值,就是匿名函數的返回值

lambda表達式只能寫在一行上面,稱爲單行函數

 

用途:

在高階函數傳參時,使用lambda表達式,往往能簡化代碼

print(1, (lambda: 0)())  # 0
print(2, (lambda x, y=3: x + y)(5))  # 8
print(3, (lambda x, y=3: x + y)(5, 6))  # 11
print(4, (lambda x, *, y=30: x + y)(5))  # 35
print(5, (lambda x, *, y=30: x + y)(5, y=10))  # 15
print(6, (lambda *args: (x for x in args))(*range(5)))  # <generator object 
print(7, (lambda *args: [x+1 for x in args])(*range(5)))  # [1,2,3,4,5]
print(8, (lambda *args: {x+2 for x in args})(*range(5)))   # {2,3,4,5,6}

print(9, [x for x in (lambda *args: map(lambda x: x+1, args))(*range(5))])
#  [1,2,3,4,5]
print(10, [x for x in (lambda *args: map(lambda x: (x+1, args), args))(*range(5))])
#  [(1, (0, 1, 2, 3, 4)), (2, (0, 1, 2, 3, 4)), (3, (0, 1, 2, 3, 4)), (4, (0, 1, 2, 3, 4)), (5, (0, 1, 2, 3, 4))]


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章