在Python中,lambda
函數是一種簡寫的匿名函數,通常用來定義簡單的、一次性使用的函數。與使用 def
定義的常規函數不同,lambda
函數沒有名稱(即匿名),而且只能寫成一行。它可以接受任意多的參數,但只能有一個表達式,該表達式的結果即為返回值。
lambda
函數的語法lambda arguments: expression
arguments
: 函數的參數,與普通函數的參數一樣,可以是多個。expression
: 單個表達式,lambda
函數的結果會自動返回這個表達式的計算結果。lambda
函數# 定義一個簡單的 lambda 函數,將參數加 10
add_ten = lambda x: x + 10
result = add_ten(5)
print(f"5 加 10 的結果是: {result}")
這個 lambda
函數等價於:
def add_ten(x):
return x + 10
lambda
函數# 定義一個 lambda 函數,將兩個數相加
add_two_numbers = lambda x, y: x + y
result = add_two_numbers(3, 4)
print(f"3 和 4 的和是: {result}")
這個 lambda
函數等價於:
def add_two_numbers(x, y):
return x + y
lambda
函數的應用場景lambda
函數通常用在需要簡短的、臨時函數的場景,尤其是在其他函數的參數中,常與內建函數如 map()
、filter()
和 sorted()
結合使用。
map()
中使用 lambda
map()
函數將一個函數應用到一個可迭代對象的每一個元素上,並返回結果。
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(f"平方后的數字列表: {squared_numbers}")
filter()
中使用 lambda
filter()
函數用來過濾可迭代對象,根據條件過濾出符合條件的元素。
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f"偶數列表: {even_numbers}")
sorted()
中使用 lambda
sorted()
函數對列表進行排序,可以根據 key
參數提供的函數自定義排序邏輯。
# 按照元組的第二個元素進行排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(f"根據第二個元素排序後的結果: {sorted_pairs}")
lambda
函數你也可以將 lambda
函數作為其他函數的返回值,這樣可以實現更靈活的應用。
def multiplier(n):
return lambda x: x * n
doubler = multiplier(2)
result = doubler(5)
print(f"5 的兩倍是: {result}")
這裡,multiplier(2)
返回一個 lambda x: x * 2
,相當於一個倍數函數。