Python教學:lambda表達式的應用-由DeepSeek產生

Python 中的 ?lambda 表達式?是一種簡潔的匿名函數,適合快速定義簡單邏輯的函數。它常用于需要函數作為參數的場景,如高階函數、排序、過濾等。以下是 lambda 的典型應用場景及示例:

1. ?基本語法?

lambda 參數1, 參數2, ... : 表達式

特點?:沒有函數名,只能包含單個表達式,自動返回表達式結果。

對比普通函數?:lambda x: x*2 等價于:

def double(x):return x * 2

2. ?應用場景?

場景 1:作為高階函數的參數?

當需要傳遞一個簡單函數到 map(), filter(), reduce() 等函數時,lambda 非常便捷:

# 示例 1:對列表元素平方

nums = [1, 2, 3]
squared = list(map(lambda x: x**2, nums)) ?# [1, 4, 9]

# 示例 2:過濾偶數

evens = list(filter(lambda x: x % 2 == 0, nums)) ?#?

# 示例 3:計算乘積(需導入 functools.reduce)

from functools import reduce
product = reduce(lambda a, b: a * b, nums) ?# 6

場景 2:自定義排序規則?

在 sorted() 或 list.sort() 中指定排序依據:

# 按字符串長度排序

words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x)) ?# ['date', 'apple', 'banana', 'cherry']

# 按元組的第二個元素排序

pairs = [(1, 3), (4, 2), (5, 1)]
sorted_pairs = sorted(pairs, key=lambda x: x) ?# [(5, 1), (4, 2), (1, 3)]

?場景 3:快速定義回調函數?

在 GUI 或事件驅動編程中簡化代碼:

# 示例:按鈕點擊事件(偽代碼)

button.on_click(lambda event: print("Button clicked!"))

?場景 4:字典排序或默認值?

在復雜數據結構中動態生成鍵或值:

# 按字典的值排序

data = {"a": 3, "b": 1, "c": 2}
sorted_items = sorted(data.items(), key=lambda item: item) ?# [('b', 1), ('c', 2), ('a', 3)]

# 使用 defaultdict 設置默認值(值為 lambda 生成的列表)

from collections import defaultdict
d = defaultdict(lambda: ["默認值"])

?3. ?注意事項?

  • 適用場景?:僅適合簡單邏輯,復雜邏輯應使用 def 定義函數。
  • 可讀性?:避免過度嵌套或過長的 lambda,否則會降低代碼可讀性。
  • 變量捕獲?:在循環中創建 lambda 時需注意變量作用域問題:

# 錯誤示例:所有 lambda 會捕獲最終的 i 值

funcs = [lambda: i for i in range(3)]
print([f() for f in funcs]) ?# 輸出 [2, 2, 2]

?# 修復方法:通過默認參數綁定當前值

funcs = [lambda x=i: x for i in range(3)]
print([f() for f in funcs]) ?# 輸出 [0, 1, 2]

4. ?總結?

使用 lambda 的場景?:

  • 需要臨時定義簡單函數(如排序、映射、過濾)。
  • 函數邏輯僅包含單個表達式。
  • 代碼簡潔性優先時(如回調函數)。

避免濫用?:復雜邏輯或需要復用代碼時,優先使用 def 定義命名函數。

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

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

相關文章

3D標定中的平面約束-平面方程的幾何意義

平面方程的一般形式為 AxByCzD0,其中系數 A、B、C、D共同決定了平面的幾何特性。 系數對平面姿態的影響 1. 法向量方向2. 平面位置3. 比例關系4. 姿態變換5.平面空間變換 1. 法向量方向 法向量方向由 A、B、C 決定 核心作用:系數 A、B、C 構成的向量 (…

C/C++藍橋杯算法真題打卡(Day6)

一、P8615 [藍橋杯 2014 國 C] 拼接平方數 - 洛谷 方法一&#xff1a;算法代碼&#xff08;字符串分割法&#xff09; #include<bits/stdc.h> // 包含標準庫中的所有頭文件&#xff0c;方便編程 using namespace std; // 使用標準命名空間&#xff0c;避免每次調用…

如何在 GoLand 中設置默認項目文件夾

在使用 GoLand 進行開發時&#xff0c;設置一個默認的項目文件夾可以大大提高工作效率。默認項目文件夾會在你打開或新建項目時自動預選&#xff0c;避免每次都需要手動導航到目標目錄。本文將詳細介紹如何在 GoLand 中設置默認項目文件夾。 步驟一&#xff1a;打開系統設置 …

DeepSeek私有化部署與安裝瀏覽器插件內網穿透遠程訪問實戰

文章目錄 前言1. 本地部署OllamaDeepSeek2. Page Assist瀏覽器插件安裝與配置3. 簡單使用演示4. 遠程調用大模型5. 安裝內網穿透6. 配置固定公網地址 前言 最近&#xff0c;國產AI大模型Deepseek成了網紅爆款&#xff0c;大家紛紛想體驗它的魅力。但隨著熱度的攀升&#xff0c…

Docker運行postgreSQL,由于異常啟動或者退出后,提示could not locate a valid checkpoint record

pg_resetwal 是 PostgreSQL 的“急救工具”&#xff0c;用于在極端情況下修復因 WAL 或控制文件損壞導致的啟動問題。 但需注意&#xff1a; 風險極高&#xff0c;可能導致數據不一致。必須立即轉儲并恢復&#xff0c;避免直接在修復后的數據庫中執行寫操作。僅在備份后使用&…

pytorch小記(十):pytorch中torch.tril 和 torch.triu 詳解

pytorch小記&#xff08;十&#xff09;&#xff1a;pytorch中torch.tril 和 torch.triu 詳解 PyTorch torch.tril 和 torch.triu 詳解1. torch.tril&#xff08;計算下三角矩陣&#xff09;&#x1f4cc; 作用&#x1f50d; 語法&#x1f539; 參數&#x1f4cc; 示例&#x1…

Java基礎與集合

參考 Java基礎知識詳解&#xff1a;從面向對象到異常處理-CSDN博客 2024年 Java 面試八股文&#xff08;20w字&#xff09;_java面試八股文-CSDN博客 基礎知識 java概述 什么是java&#xff1f; java是一種面向對象的編程語言 java特點 面向對象&#xff08;繼承&#…

【R語言】二項分布,正態分布,極大似然估計實現

二項分布 生成二項分布概率 s <- 0:60 prob <- dbinom(s, size 60, prob 1/6)s <- 0:60&#xff1a;生成 0 到 60 之間的整數&#xff0c;表示可能的成功次數。 dbinom(s, size 60, prob 1/6)dbinom(x, size, prob) 計算二項分布的概率質量函數&#xff08;PMF…

【C語言】:學生管理系統(多文件版)

一、文件框架 二、Data data.txt 三、Inc 1. list.h 學生結構體 #ifndef __LIST_H__ #define __LIST_H__#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include <time.h>#define MAX_LEN 20// 學生信息…

OpenResty/Lua 編碼指南/指南

很多開發語言都有自己的編碼規范&#xff0c;來告訴開發者這個領域內一些約定俗成的東西&#xff0c;讓大家寫的代碼風格保持一致&#xff0c;并且避免一些常見的陷阱。這對于新手來說是非常友好的&#xff0c;可以讓初學者快速準確地上手。比如 Python 的 PEP 80&#xff0c;就…

數據結構 -- 二叉樹的存儲結構

二叉樹的存儲結構 順序存儲 #define MaxSize 100 struct TreeNode{ElemType value; //結點中的數據元素bool isEmpty; //結點元素是否為空 };//定義一個長度為MaxSize的數組t&#xff0c;按照從上至下、從左至右的順序依次完成存儲完全二叉樹中的各個節點 TreeNode t[MaxSi…

Linux系統移植篇(十一)Linux 內核啟動流程

要分析 Linux 啟動流程&#xff0c;同樣需要先編譯一下 Linux 源碼&#xff0c;因為有很多文件是需要編譯才 會生成的。首先分析 Linux 內核的連接腳本文件 arch/arm/kernel/vmlinux.lds&#xff0c;通過鏈接腳本可以 找到 Linux 內核的第一行程序是從哪里執行的。vmlinux.lds …

【Docker入門】構建推送第一個Docker映像

【Docker入門】構建推送第一個Docker映像 Build and Push the First Docker Image By JacksonML Docker的容器(Container)映像是輕量級的可執行獨立包&#xff0c;包含代碼、運行時、庫、環境變量以及配置文件&#xff0c;它對于運行軟件至關重要。注冊表可在團隊間分享映像。…

【eNSP實戰】(續)一個AC多個VAP的實現—將隧道轉發改成直接轉發

在 一個AC多個VAP的實現—CAPWAP隧道轉發 此篇文章配置的基礎上&#xff0c;將隧道轉發改成直接轉發 一、改成直接轉發需要改動的配置 &#xff08;一&#xff09;將連接AP的接口改成trunk口&#xff0c;并允許vlan100、101、102通過 [AC1]interface GigabitEthernet 0/0/8 …

SPI 總線協議

1、協議介紹 SPI&#xff0c;是英語 Serial Peripheral interface 的縮寫&#xff0c;顧名思義就是串行外圍設備接口。是 Motorola 首先在其 MC68HCXX 系列處理器上定義的。 SPI&#xff0c;是一種高速的&#xff0c;全雙工&#xff0c;同步的通信總線。主節點或子節點的數據在…

我愛學算法之——滑動窗口攻克子數組和子串難題(上)

現在來學習"滑動窗口"這一算法思想。 至于什么是"滑動窗口"呢&#xff1f;簡單來說就是同向雙指針&#xff1b;現在來通過題目來了解什么是"滑動窗口" 一、長度最小的子數組 題目鏈接&#xff1a;長度最小的子數組 題目解析 先來看題目&#…

ora-600 ktugct: corruption detected---惜分飛

接手一個oracle 21c的庫恢復請求,通過Oracle數據庫異常恢復檢查腳本(Oracle Database Recovery Check)腳本檢測之后,發現undo文件offline之后,做了resetlogs操作,導致該文件目前處于WRONG RESETLOGS狀態 嘗試恢復數據庫ORA-16433錯誤 SQL> recover datafile 1; ORA-00283:…

20. Excel 自動化:Excel 對象模型

一 Excel 對象模型是什么 Excel對象模型是Excel圖形用戶界面的層次結構表示&#xff0c;它允許開發者通過編程來操作Excel的各種組件&#xff0c;如工作簿、工作表、單元格等。 xlwings 是一個Python庫&#xff0c;它允許Python腳本與Excel進行交互。與一些其他Python庫&#x…

IIS 服務器日志和性能監控

Internet Information Services &#xff08;IIS&#xff09; 是 Microsoft 提供的一款功能強大、靈活且可擴展的 Web 服務器&#xff0c;用于托管網站、服務和應用程序。IIS 支持 HTTP、HTTPS、FTP、SMTP 和更多用于提供網頁的協議&#xff0c;因此廣泛用于企業環境。 IIS 的…

jenkins pipline 自動化測試

以下是一個典型的 Jenkins Pipeline 示例&#xff0c;用于執行自動化測試流程&#xff08;支持單元測試、集成測試、代碼質量掃描&#xff09;&#xff0c;包含多階段執行和測試結果處理&#xff1a; pipeline {agent anyenvironment {// 定義環境變量PROJECT_NAME "my-…