目錄
(一)應用場景
(二)lambda 語法
(三)示例分析
(四)lambda參數形式
4.1 無參數
4.2 一個參數
4.3 默認參數
4.4 可變參數 :*args
4.5?可變參數 :**kargs
(五)lambda的應用
5.1 帶判斷的lambda
5.2 列表數據按照字典key的值排序
(一)應用場景
在Python中,lambda是一個關鍵字,用于定義小的匿名函數。
這些函數也稱為“lambda函數”或“lambda表達式”。
lambda函數主要用于需要一個函數作為參數的函數式編程場景,或者需要定義一個簡單的函數而不需要使用def
語句。
lambda 函數特點:
- lambda 函數是匿名的,它們沒有函數名稱,只能通過賦值給變量或作為參數傳遞給其他函數來使用。
- lambda 函數通常只包含一行代碼,這使得它們適用于編寫簡單的函數。
(二)lambda 語法
lambda arguments: expression ?
- lambda 是 Python 的關鍵字,用于定義 lambda 函數。
- arguments` 是函數的參數列表,和`def`中定義函數時一樣,只是沒有變量名。 ?
- expression` 是一個表達式,這個表達式的值會被返回。 ?
(三)示例分析
示例:計算 a + b
- 方法一:函數實現
def add(a,b):return a +b
result = add(1,2)
print(result)
- 方法二:lambda實現?
res = lambda a,b : a + b
print(res(1,2))
(四)lambda參數形式
4.1 無參數
- 以下的 lambda 函數沒有參數:
f = lambda: 100
print(f()) # 輸出: 100
4.2 一個參數
- ?以下的 lambda 函數有一個參數:
fn1 = lambda a:a
print(fn1('hello world')) # 輸出: hello world
又或如下:
x = lambda a : a + 10
print(x(5))
4.3 默認參數
- ??以下的 lambda 函數默認參數:
fn1 = lambda a,b,c=100: a + b + c
print(fn1(10,20)) # 輸出: 130
4.4 可變參數 :*args
在Python中,lambda 函數通常用于定義簡單的匿名函數
fn2 = lambda *args : args
print(fn2(10)) # 輸出:(10,)
print(fn2(10,20)) # 輸出:(10, 20)
print(fn2(10,20,30)) # 輸出:(10, 20, 30)
4.5?可變參數 :**kargs
**kargs允許你傳入任意數量的關鍵字參數到一個函數中,并將這些參數存儲在一個字典中。
fn3 = lambda **kwargs : kwargs
print(fn3(name = 'python')) # 輸出:{'name': 'python'}
print(fn3(name = 'python',age = 20))# 輸出:{'name': 'python', 'age': 20}
(五)lambda的應用
5.1 帶判斷的lambda
在Python中,lambda表達式用于定義簡單的匿名函數。雖然?lambda通常用于執行簡單的操作,但它也可以包含基本的判斷邏輯,比如使用條件表達式(也稱為三元運算符)。
條件表達式在Python中的語法是?value_if_true if condition else value_if_false
。你可以在?lambda 函數中使用這種語法來執行基于條件的判斷。
# 定義一個lambda函數,如果x大于y則返回x,否則返回y
fn1 = lambda x,y: x if x > y else y# 測試lambda函數
print(fn1(5,10)) # 輸出: 10
print(fn1(7,5)) # 輸出: 7
print(fn1(-5,0)) # 輸出: 0
5.2 列表數據按照字典key的值排序
在Python中,lambda函數常常與sorted函數一起使用,以對列表中的元素進行自定義排序。假設你有一個包含字典的列表,并且你想根據字典中的某個鍵(key)的值來進行排序。
- 首先,創建一個包含字典的列表:?
data = [ {'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}, {'name': 'David', 'age': 23},
]
- ?如果想根據
'age'
鍵的值進行升序排序,可以這樣做:
data.sort(key=lambda x : x['age'])
print(data)
- 輸出將會是:
[{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}, {'name': 'David', 'age': 23}, {'name': 'Alice', 'age': 25}
]
- 如果想進行降序排序,你可以使用
reversed
函數或者傳遞reverse=True
給sorted
函數:?