Python Lambda 函數:匿名函數指南
了解如何在 Python 中編寫匿名 lambda 函數。掌握使用 lambda 語法的 map()、filter() 和排序() 的函數式程式設計模式。
概述
在 Python 中,lambda 函數(也稱為匿名函數)是一種小型、快速的單行函數,不需要標準的「def」關鍵字或正式名稱。它們旨在臨時、快速使用,可讓您直接內嵌傳遞功能邏輯作為參數。這使您的程式碼更加緊湊,減少了編寫僅在一個地方調用的成熟輔助函數的開銷。
lambda 函數的語法很簡單:「lambda 參數:表達式」。與標準函數不同,lambda 沒有明確的「return」語句;表達式會自動求值並傳回。此外,lambda 函數僅限於單一表達式,這意味著您無法在其中編寫複雜的多行循環、賦值或條件區塊,從而強制執行乾淨的函數式方法。
Lambda 函數通常與內建高階函數結合使用,例如「map()」(將函數套用至清單中的每個項目)、「filter()」(保留與條件相符的項目)和「sorted()」(使用自訂排序鍵對項目進行排序)。例如,當使用 lambda 作為排序鍵時,按特定字典鍵對字典列表進行排序是輕而易舉的事。了解 lambda 函數為您提供了編寫乾淨的 Python 程式碼的重要工具。
程式碼和執行輸出
使用內聯匿名函數對複雜的字典列表進行排序並過濾資料集。
lambda_demo.py
在編輯器中嘗試# Sorting using lambda
students = [
{"name": "Alice", "grade": 88},
{"name": "Bob", "grade": 95},
{"name": "Charlie", "grade": 90}
]
# Sort students by grade (descending)
sorted_students = sorted(students, key=lambda s: s["grade"], reverse=True)
print("Sorted students by grade:")
for student in sorted_students:
print(f"- {student['name']}: {student['grade']}")
# Filtering using lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))
print(f"\nOdd numbers: {odd_numbers}")端子輸出
Sorted students by grade:
- Bob: 95
- Charlie: 90
- Alice: 88
Odd numbers: [1, 3, 5, 7]逐步實施
- 將自訂排序標準傳遞給 list.sort() 和sorted()
- 在數據科學管道中應用內聯轉換
- 在事件驅動的 UI 應用程式中定義快速回調
常見問題解答
lambda 函數可以接受多個參數嗎?
是的,您可以定義多個以逗號分隔的參數,例如 lambda x, y: x + y。
為什麼 lambda 函數稱為匿名函數?
因為它們是在沒有名稱綁定的情況下創建的,這與在本地命名空間中註冊特定名稱的 def 函數不同。
相關主題
推薦的 Python 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。