Python基礎---匿名函數

1  爲何要有lambda函數

  在Python語言中除了def語句用來定義函數以外,還能夠使用匿名函數lambda,它是Python一種生成函數對象的表達式形式。匿名函數一般是建立了能夠被調用的函數,它返回了函數,而並無將這個函數命名。lambda有時被叫作匿名函數也就是這個緣由,須要一個函數,又不想動腦筋去想名字,這就是匿名函數。express

 

  語法:函數

    lambda函數的語法只包含一個語句:   lambda arg1,arg2,.....argn:expressionspa

    lambda 能夠無參數,也能夠多參數,可是語句只有一個code

2  使用場景

  列表的排列函數中:orm

list_1 = [{"name":"wang","age":10},{"name":"xiaoming","age":20},{"name":"banzhang","age":10}]
infors.sort(key=lambda x:x['age']) #根據age對字典排序
print(infors)

輸出:
[{'name': 'wang', 'age': 10}, {'name': 'banzhang', 'age': 10}, {'name': 'xiaoming', 'age': 20}]

list_2=['hjkgfdk','sdfrgr','gregth','rewfrwrg','htht','qwqw']
list_2.sort(key=lambda x:x[2])
print(list_2)

輸出
['gregth', 'sdfrgr', 'htht', 'hjkgfdk', 'qwqw', 'rewfrwrg']

 

    用在過濾函數中,指定過濾列表元素的條件:對象

filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])

輸出 
> [3, 6, 9]

 

  reduce()函數,在 Python3 中,reduce() 函數已經被從全局名字空間裏移除了,它如今被放置在 fucntools 模塊裏,若是想要使用它,則須要經過引入 functools 模塊來調用 reduce() 函數: from functools import reduceblog

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

 

   用在map()函數中排序

map(lambda x: x+1, [1, 2,3])
> [2, 3, 4]

  

  做爲一個函數的參數io

 
 
def transform(fun,*arg):
return fun(*arg)
print(transform(lambda x,y:x*y,1,8))
輸出: 
8

   返回一個三元表達式:form

 

相關文章
相關標籤/搜索