lambda
函數是Python中用于創建小型匿名函數的一種方式。這些函數通常用于需要一個簡單函數的場景,例如作為參數傳遞給高階函數。lambda
函數以lambda
關鍵字開始,后跟參數列表和表達式,語法形式如下:
lambda arguments: expression
特點
- 匿名性:
lambda
函數沒有函數名,定義時不會綁定到特定標識符。 - 簡潔性:適用于簡單的函數,通常只包含一行表達式。
- 返回值:
lambda
函數自動返回表達式的結果,無需顯式使用return
。
示例
基本用法
創建一個簡單的lambda
函數來計算兩個數的和:
add = lambda x, y: x + y
print(add(3, 5)) # 輸出: 8
作為高階函數的參數
lambda
函數常用于高階函數,如map
、filter
和sorted
等。
map
示例:
將一個列表中的每個元素乘以2:
numbers = [1, 2, 3, 4, 5]
doubled = map(lambda x: x * 2, numbers)
print(list(doubled)) # 輸出: [2, 4, 6, 8, 10]
filter
示例:
過濾出列表中所有的偶數:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = filter(lambda x: x % 2 == 0, numbers)
print(list(evens)) # 輸出: [2, 4, 6, 8, 10]
sorted
示例:
按照第二個元素排序一個元組列表:
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs) # 輸出: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
復雜用法
雖然lambda
函數適用于簡單的表達式,但它們也可以用來實現稍復雜的邏輯,例如在數據處理流水線中:
students = [{'name': 'John', 'grade': 88},{'name': 'Jane', 'grade': 92},{'name': 'Dave', 'grade': 85}
]# 按照成績排序
sorted_students = sorted(students, key=lambda student: student['grade'])
print(sorted_students)
# 輸出: [{'name': 'Dave', 'grade': 85}, {'name': 'John', 'grade': 88}, {'name': 'Jane', 'grade': 92}]
注意事項
- 可讀性:雖然
lambda
函數簡潔,但對于復雜的操作,最好使用def
關鍵字定義具名函數,以提高代碼的可讀性和可維護性。 - 限制:
lambda
函數只能包含一個表達式,不能包含多條語句或復雜的控制流。
結論
lambda
函數在Python中提供了一種簡潔的方式來定義短小的匿名函數,非常適合用于一次性操作或作為高階函數的參數。然而,對于復雜的邏輯,應優先使用常規的函數定義,以保持代碼的清晰和可維護。