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 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。