Python3中lambda表达式介绍
生活随笔
收集整理的這篇文章主要介紹了
Python3中lambda表达式介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? Python3中的lambda表達式或lambda函數是匿名函數(anonymous function),意味著該函數沒有名稱。def關鍵字用于在Python3中創建一個普通函數,類似地,lambda關鍵字用于在Python3中創建匿名函數。
? ? ? Python3 lambda函數語法:
lambda parameters: expression
未命名對象的行為類似于定義了以下內容的函數對象:
def <lambda>(parameters):return expression
? ? ? (1).lambda函數可以有任意數量的參數,但只能有一個表達式,它被評估和返回。它在語法上僅限于單個表達式。從語義上講,它只是普通函數定義的語法糖(syntactic sugar)。
? ? ? (2).在任何需要函數對象的地方都可以自由使用lambda函數。
? ? ? (3).lambda函數擁有自己的命名空間,不能訪問自己參數列表之外或全局命名空間里的變量。
? ? ? (4).與嵌套函數定義一樣,lambda函數可以從包含的作用域中引用變量。
? ? ? (5).可以將lambda函數作為參數傳遞給其它函數。
? ? ?以下為測試代碼:
var = 2
if var == 1:# reference: https://docs.python.org/3/tutorial/controlflow.html# 與嵌套函數定義一樣,lambda函數可以從包含的作用域中引用變量def make_incrementor(n):# 使用一個lambda表達式來返回一個函數return lambda x: x + nf = make_incrementor(42)print(f(0)) # 42print(f(1)) # 43def mul():# 可以有任意數量的參數,但只能有一個表達式return lambda x, y: x * yf2 = mul()print(f2(5, 6)) # 30# 傳遞一個小函數作為參數pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]pairs.sort(key=lambda pair: pair[1])print(pairs) # [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
elif var == 2:# reference: https://www.geeksforgeeks.org/python-lambda-anonymous-functions-filter-map-reduce/def cube(y):return y*y*y# lambda定義不包含"return"語句,它始終包含返回的表達式lambda_cube = lambda y: y*y*yprint(cube(5)) # 125print(lambda_cube(5)) # 125# Python Lambda Function with List Comprehensiontables = [lambda x=x: x*10 for x in range(1, 11)]for table in tables:print(table(), end=",") # 10,20,30,40,50,60,70,80,90,100,print()# Python Lambda Function with if-elseMax = lambda a, b : a if(a > b) else bprint(Max(1, 2)) # 2# lambda函數不允許多個語句,但是,我們可以創建兩個lambda函數,然后調用另一個lambda函數作為第一個函數的參數List = [[4, 3, 2], [1, 16, 4, 64], [6, 3, 12, 9]]# Sort each sublistsortList = lambda x: (sorted(i) for i in x) # 升序排序# Get the second largest elementsecondLargest = lambda x, f : [y[len(y)-2] for y in f(x)] # 返回list中的第n-2個元素,其中n為list的長度res = secondLargest(List, sortList)print(res) # [3, 16, 9]ages = [13, 90, 17, 59, 21, 60, 5]adults = list(filter(lambda age: age>18, ages)) # filter函數接受一個函數和一個列表作為參數print(adults) # [90, 59, 21, 60]animals = ['dog', 'cat', 'parrot', 'rabbit']uppered_animals = list(map(lambda animal: str.upper(animal), animals)) # map函數接受一個函數和一個列表作為參數print(uppered_animals) # ['DOG', 'CAT', 'PARROT', 'RABBIT']print("test finish")
? ? ? GitHub:https://github.com/fengbingchun/Python_Test
總結
以上是生活随笔為你收集整理的Python3中lambda表达式介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3中collections.
- 下一篇: Python3中内置函数callable