Python擴展知識詳解:lambda函數

目錄

前言

1? 基本知識點

語法

特點

代碼示例

2? 常見使用場景

1.? 與高階函數配合使用

2.? 作為排序鍵來使用

3.? 立即調用函數

4.? 在字典中使用

3? 高級用法(進階版)

1.? 多參數lambda

2.? 設置默認參數

3.? 嵌套lambda

注意事項

何時使用lambda

何時避免使用lambda

小結


前言

????????Lambda函數是Python中的一種匿名函數,本質上還是一個函數,它可以用一行代碼定義一個簡單的函數,而不需要使用def關鍵字。

1? 基本知識點

語法

lambda arguments: expression
  • lambda:定義lambda函數的關鍵字

  • arguments:函數的參數,可以有多個,參數之間用逗號分隔

  • expression:函數的返回值表達式,只能有一個表達式

特點

  1. 匿名函數:沒有函數名

  2. 自動返回返回值:不需要用return語句,會自動返回表達式的結果

  3. 簡潔:通常用于簡單操作,可以替代小型函數

  4. 單行表達式:只能包含一個表達式,不能包含復雜的邏輯或多條語句

  5. 可以作為參數傳遞:常用于高階函數,如map(),?filter(),?reduce()

代碼示例

# 普通函數定義
def add(x, y):return x + y# 等效的lambda函數
add_lambda = lambda x, y: x + y# 測試
print(add(3, 5))        # 輸出: 8
print(add_lambda(3, 5))  # 輸出: 8

2? 常見使用場景

1.? 與高階函數配合使用

# 使用map()和lambda將列表中的每個元素平方
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # 輸出: [1, 4, 9, 16, 25]# 使用filter()和lambda篩選偶數
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 輸出: [2, 4]

map()和filter()內置函數的使用方法見其他文章(pass:作者暫未發布,后續會發布詳解)

2.? 作為排序鍵來使用

# 按元組的第二個元素排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # 輸出: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]# 按字符串長度排序
fruits = ['apple', 'banana', 'cherry', 'date']
fruits_sorted = sorted(fruits, key=lambda x: len(x))
print(fruits_sorted)  # 輸出: ['date', 'apple', 'banana', 'cherry']

3.? 立即調用函數

# 定義并立即調用lambda函數
result = (lambda x, y: x * y)(5, 3)
print(result)  # 輸出: 15

4.? 在字典中使用

# 使用lambda作為字典值實現簡單計算器
operations = {'add': lambda x, y: x + y,'subtract': lambda x, y: x - y,'multiply': lambda x, y: x * y,'divide': lambda x, y: x / y
}print(operations['add'](10, 5))       # 輸出: 15
print(operations['multiply'](10, 5))  # 輸出: 50

說明:字典的值可以是任意類型,包括函數。


3? 高級用法(進階版)

1.? 多參數lambda

# 多個參數的lambda函數
full_name = lambda first, last: f"{first} {last}"
print(full_name('John', 'Doe'))  # 輸出: John Doe

2.? 設置默認參數

# 帶默認參數的lambda
greet = lambda name, greeting='Hello': f"{greeting}, {name}!"
print(greet('Alice'))          # 輸出: Hello, Alice!
print(greet('Bob', 'Hi'))      # 輸出: Hi, Bob!

3.? 嵌套lambda

# 嵌套lambda函數
multiplier = lambda x: (lambda y: x * y)
times3 = multiplier(3)
print(times3(5))  # 輸出: 15

注意事項

  1. 可讀性:過度使用lambda會降低代碼可讀性,復雜的邏輯應該使用普通函數

  2. 調試:lambda函數沒有函數名,調試時可能更難追蹤

  3. 限制:lambda只能包含一個表達式,不能包含語句或注解

何時使用lambda

  • 函數邏輯非常簡單

  • 函數只在一個地方使用

  • 作為參數傳遞給高階函數

  • 需要短小的回調函數

何時避免使用lambda

  • 函數邏輯復雜

  • 函數需要重用

  • 需要文檔字符串或類型注解

  • 函數需要多個語句


小結

????????Lambda函數是Python中一個強大的工具,特別適合與高階函數配合使用或需要短小匿名函數的場景。雖然它簡潔高效,但應該適度使用以保持代碼的可讀性和可維護性。

如果您覺得本文章對您有幫助,別忘了點贊、收藏加關注,更多干貨內容將持續發布,您的支持就是作者更新最大的動力。本專欄將持續更新,有任何問題都可以在評論區討論

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76219.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76219.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76219.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android: Fragment 的使用指南

Android 中 Fragment 的使用指南 Fragment 是 Android 應用開發中的重要組件,它代表 Activity 中的一部分 UI 或行為,可以組合多個 Fragment 在一個 Activity 中構建多窗格 UI,并在不同 Activity 中重復使用某個 Fragment。 基本概念 Frag…

Vue React

Vue 的源碼主要分為以下幾個部分: 主要涉及 響應式、虛擬 DOM、組件系統、編譯器、運行時。 ├── packages/ │ ├── compiler-core/ # 編譯器核心 │ ├── compiler-sfc/ # 處理 .vue 單文件組件 │ ├── compiler-dom/ # 處理 DOM 相關…

項目實戰--權限列表

后端數據: 用表格實現權限列表 const dataSource [{key: 1,name: 胡彥斌,age: 32,address: 西湖區湖底公園1號,},{key: 2,name: 胡彥祖,age: 42,address: 西湖區湖底公園1號,}, ];const columns [{title: 姓名,dataIndex: name,key: name,},{title: 年齡,dataInd…

私有知識庫 Coco AI 實戰(一):Linux 平臺部署

Coco AI 是一個完全開源、跨平臺的統一搜索和生產力工具,能夠連接各種數據源,包括應用程序、文件、Google Drive、Notion、Yuque、Hugo 等,幫助用戶快速智能地訪問他們的信息。通過集成 DeepSeek 等大型模型,Coco AI 實現了智能個…

【大模型】微調一個大模型需要多少 GPU 顯存?

視頻鏈接:微調一個模型需要多少GPU顯存? up 主頁:AI老兵tags: #GPU顯存 #模型微調 #LoRA #QLoRA #參數計算 本集視頻詳細介紹了在模型微調過程中 GPU顯存需求的計算方法,包括全量微調和高效微調(如 LoRA&am…

Lambda 表達式是什么以及如何使用

目錄 📌 Kotlin 的 Lambda 表達式詳解 🎯 什么是 Lambda 表達式? 🔥 1. Lambda 表達式的基本語法 ? 示例 1:Lambda 基本寫法 ? 示例 2:使用 it 關鍵字(單參數簡化) ? 示例 3…

全文 MLIR TOY -- Chapter2: 發出基本的 MLIR——把AST變成SSA的 MLIR Dialect IR

現在我們已經熟悉 Toy 語言和它的AST表示,現在讓我們看看 MLIR 是怎樣幫助編譯 Toy 源程序的。 簡介:多層中間表示 其他的編譯器,像 LLVM,是提供一個固定的預定義類型和指令(通常是底層的像 RISC的指令)。對…

一個判斷A股交易狀態的python腳本

最近在做股票數據相關的項目,需要用到判斷某一天某個時刻A股的狀態,比如休市,收盤,交易中等,發動腦筋想了一下,這個其實還是比較簡單的,這里我把實現方法分享給大家。 思路 當天是否休市 對于某…

LLaMA Factory微調后的大模型在vLLM框架中對齊對話模版

LLaMA Factory微調后的大模型Chat對話效果,與該模型使用vLLM推理架構中的對話效果,可能會出現不一致的情況。 下圖是LLaMA Factory中的Chat的對話 下圖是vLLM中的對話效果。 模型回答不穩定:有一半是對的,有一半是無關的。 1、未…

004 健身房個性化訓練計劃——金丹期(體態改善)

個人筆記使用。 01 肱骨前移 1.放松肩前束 2.放松肩后束 2.5kg啞鈴側展 泡沫軸上下滾 招財貓 肱二頭 02 溜肩 寬距的坐姿劃船 上頂

【已開源】UniApp+vue3跨端應用從0到1開發指南、uniapp+vue3模板應用

在跨端開發日益成為主流的今天,如何高效構建規范、可維護的企業級應用?本文以UniAppVue3* *TypeScript**為核心技術棧,手把手帶你從零搭建高標準的跨平臺項目。 通過本文,你將系統掌握: ? 環境配置:Node…

線程池設計

線程池實際上也是一個生產者消費者模型&#xff0c;線程池可以讓多個線程去任務隊列中取任務&#xff0c;執行任務&#xff0c;適用于需要大量的線程來完成任務且完成任務的時間較短。 #include "log.hpp" #include <mutex> #include <condition_variable&…

黑盒測試的正交實驗法

背景: 利用因果圖法、判定表法可以幫助我們對于輸入數據的組合情況進行用例設計&#xff0c;但當輸入數據的組合數量巨大時&#xff0c;由于不太可能覆蓋到每個輸入組合的測試情況&#xff0c;因果圖法或判定表法可能就不太適用了&#xff0c;可以采用正交實驗法、來合理地減少…

Linux內核編程

linux 系 統 在 2 4 4 0 上 的 啟 動 過 程 分 三個 階 段 u-boot的啟動 1.先分清寄存器的分類 RAM的分類 ROM的分類 Mini2440開發板的存 儲器配置 Mini2440開發板板載: 1. 64MB sdram; 2. 256MB nand-flash; 3. 2MB nor-flash; 4. s3c2440內部還有4KB iram; Mini2440的啟…

黑盒測試的判定表法(能對多條件依賴關系進行設計測試點)

定義: 判定表是分析和表達多邏輯條件下執行不同操作的工具。就是指把所有的輸入條件、所有可能采取的動作按表格列出來&#xff0c;每一種條件和動作的組合構成一條規則&#xff0c;也即一條用例。 1.判定表法的引用 等價類邊界值分析法主要關注單個輸入類條件的測試并未考慮…

從零構建大語言模型全棧開發指南:第四部分:工程實踐與部署-4.1.2ONNX格式轉換與TensorRT部署

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 從零構建大語言模型全棧開發指南-第四部分:工程實踐與部署4.1.2 ONNX格式轉換與TensorRT部署1. 模型部署的核心挑戰與價值2. ONNX格式轉換技術詳解2.1 ONNX技術棧組成2.2 轉換流程與關鍵技術2.3 轉換常…

免費下載 | 2025年網絡安全報告

報告總結了2024年的網絡安全態勢&#xff0c;并對2025年的安全趨勢進行了預測和分析。報告涵蓋了勒索軟件、信息竊取軟件、云安全、物聯網設備安全等多個領域的安全事件和趨勢&#xff0c;并提供了安全建議和最佳實踐。 一、報告背景與目的 主題&#xff1a;2024企業信息安全峰…

基于Real-Sim-Real循環框架的機器人策略遷移方法

編輯&#xff1a;陳萍萍的公主一點人工一點智能 基于Real-Sim-Real循環框架的機器人策略遷移方法本文通過嚴謹的理論推導和系統的實驗驗證&#xff0c;構建了一個具有普適性的sim-to-real遷移框架。https://mp.weixin.qq.com/s/cRRI2VYHYQUUhHhP3bw4lA 01 摘要 本文提出的Rea…

語義分析(編譯原理)

1.什么是語義分析: 前兩個階段&#xff0c;詞法分析是從字符到單詞的一級識別&#xff0c;保證了每個單詞的形式是正確的&#xff0c; 語法分析是由單詞到語法樹的一級識別&#xff0c;如果不符合語法規則就不能建樹&#xff0c;因此保證了各個語法成分的構成是正確的 詞法分…

藍橋杯備考---》貪心算法之矩陣消除游戲

我們第一次想到的貪心策略一定是找出和最大的行或者列來刪除&#xff0c;每次都更新行和列 比如如圖這種情況&#xff0c;這種情況就不如直接刪除兩行的多&#xff0c;所以本貪心策略有誤 so我們可以枚舉選的行的情況&#xff0c;然后再貪心的選擇列和最大的列來做 #include …