【Python】—— lambda表达式

目录

(一)应用场景

(二)lambda 语法

(三)示例分析

(四)lambda参数形式

4.1 无参数

4.2 一个参数

4.3 默认参数

4.4 可变参数 :*args

4.5 可变参数 :**kargs

(五)lambda的应用

5.1 带判断的lambda

5.2 列表数据按照字典key的值排序


(一)应用场景

在Python中,lambda是一个关键字,用于定义小的匿名函数。

这些函数也称为“lambda函数”或“lambda表达式”。

lambda函数主要用于需要一个函数作为参数的函数式编程场景,或者需要定义一个简单的函数而不需要使用def语句。

lambda 函数特点:

  • lambda 函数是匿名的,它们没有函数名称,只能通过赋值给变量或作为参数传递给其他函数来使用。
  • lambda 函数通常只包含一行代码,这使得它们适用于编写简单的函数。

(二)lambda 语法

lambda arguments: expression  
  • lambda 是 Python 的关键字,用于定义 lambda 函数。
  • arguments` 是函数的参数列表,和`def`中定义函数时一样,只是没有变量名。  
  • expression` 是一个表达式,这个表达式的值会被返回。  

(三)示例分析

示例:计算 a + b

  • 方法一:函数实现
def add(a,b):return a +b
result = add(1,2)
print(result)
  • 方法二:lambda实现 
res = lambda a,b : a + b
print(res(1,2))

(四)lambda参数形式

4.1 无参数

  • 以下的 lambda 函数没有参数:
f = lambda: 100
print(f())  # 输出: 100

4.2 一个参数

  •  以下的 lambda 函数有一个参数:
fn1 = lambda a:a
print(fn1('hello world'))   # 输出: hello world

又或如下:

x = lambda a : a + 10
print(x(5))

4.3 默认参数

  •   以下的 lambda 函数默认参数:
fn1 = lambda a,b,c=100: a + b + c
print(fn1(10,20))    # 输出: 130

4.4 可变参数 :*args

在Python中,lambda 函数通常用于定义简单的匿名函数

fn2 = lambda *args : args
print(fn2(10))       # 输出:(10,)
print(fn2(10,20))    # 输出:(10, 20)
print(fn2(10,20,30)) # 输出:(10, 20, 30)

4.5 可变参数 :**kargs

**kargs允许你传入任意数量的关键字参数到一个函数中,并将这些参数存储在一个字典中。

fn3 = lambda **kwargs : kwargs
print(fn3(name = 'python'))         # 输出:{'name': 'python'}
print(fn3(name = 'python',age = 20))# 输出:{'name': 'python', 'age': 20}

(五)lambda的应用

5.1 带判断的lambda

在Python中,lambda表达式用于定义简单的匿名函数。虽然 lambda通常用于执行简单的操作,但它也可以包含基本的判断逻辑,比如使用条件表达式(也称为三元运算符)。

条件表达式在Python中的语法是 value_if_true if condition else value_if_false。你可以在 lambda 函数中使用这种语法来执行基于条件的判断。

# 定义一个lambda函数,如果x大于y则返回x,否则返回y
fn1 = lambda x,y: x if x > y else y# 测试lambda函数
print(fn1(5,10))  # 输出: 10
print(fn1(7,5))  # 输出: 7
print(fn1(-5,0))  # 输出: 0

5.2 列表数据按照字典key的值排序

在Python中,lambda函数常常与sorted函数一起使用,以对列表中的元素进行自定义排序。假设你有一个包含字典的列表,并且你想根据字典中的某个键(key)的值来进行排序。

  • 首先,创建一个包含字典的列表: 
data = [  {'name': 'Alice', 'age': 25},  {'name': 'Bob', 'age': 20},  {'name': 'Charlie', 'age': 22},  {'name': 'David', 'age': 23},  
]
  •  如果想根据'age'键的值进行升序排序,可以这样做:
data.sort(key=lambda x : x['age'])
print(data)
  • 输出将会是:
[{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}, {'name': 'David', 'age': 23}, {'name': 'Alice', 'age': 25}
]
  • 如果想进行降序排序,你可以使用reversed函数或者传递reverse=Truesorted函数: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/330884.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四十一天 | 62.不同路径 63.不同路径|| 343.整数拆分 96.不同的二叉搜索树

题目:62.不同路径 1.二维dp数组dp[i][j]含义:到达(i,j)位置有dp[i][j]种方法。 2.动态转移方程:dp[i][j] dp[i - 1][j] dp[i][j - 1] 3.初始化:dp[0][j] 1, dp[i][0] 1 (第一…

Spring Cloud 之 Gateway

本篇主要介绍有关Gateway网关的相关内容。 目录 一、什么是网关 二、Gateway的使用 Gateway服务的搭建 Route Predicate Factories Gateway Filter Factories Filter GlobalFilter Filter的执行顺序 一、什么是网关 经常面试的人肯定知道,在去公司面试时…

CAN笔记第二篇,车载测试继续学起来!

在CAN协议中,“帧”是一个包含完整信息的独立单元,它具有特定的格式和结构,以确保数据在CAN总线上的可靠传输。这里的“帧”字可以理解为: 完整性:一个帧包含了所有必要的信息,从起始到结束,都遵…

【LeetCode】【1】两数之和(1141字)

文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示进阶Python实现哈希表 个人主页:丷从心 系列专栏:LeetCode 刷题指南:LeetCode刷题指南 题目描述 给定一个整数数组nums和一个整数目标值target,请在该数组中找出…

视觉检测实战项目——九点标定

本文介绍九点标定方法 已知 9 个点的图像坐标和对应的机械坐标,直接计算转换矩阵,核心原理即最小二乘拟合 {𝑥′=𝑎𝑥+𝑏𝑦+𝑐𝑦′=𝑎′𝑥+𝑏′𝑦+𝑐′ [𝑥1𝑦11𝑥2𝑦21⋮⋮⋮𝑥9𝑦91][𝑎𝑎′𝑏𝑏′𝑐𝑐′]=[𝑥1′𝑦…

AI爆文写作:根据别人的爆款标题,如何通过名词替换改成自己的爆款标题?

在日常刷到爆文的时候,就可以培养自己的网感,为啥这篇文章会爆? 这篇爆文的标题有啥诀窍呢? 比如下面这一篇:《极简生活:变富就是每天循环5个动作》 我们可以发现,每天循环5个动作 这几个词语…

C#基础一

使用Visual Studio 2022(VS2022)编写C#控制台程序 1. 安装Visual Studio 2022 确保已安装Visual Studio 2022。如果未安装,请从Visual Studio官网下载并安装。 另一篇文章中已经有详细描述,这里就不在细说了。 VisualStudio2022…

【JavaEE 初阶(十)】JVM

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多进阶知识 目录 1.前言2.JVM内存区域划分3.类加载3.1双亲委派模型 4.垃圾回收(GC&#xff0…

1098: 堆的判断

解法&#xff1a; 堆是完全二叉树 用数组来存储 然后用定义判定 #include<iostream> #include<vector> using namespace std; int main() {int n;cin >> n;vector<int> vec(n);for (int i 0; i < n; i) cin >> vec[i];for (int i 0; i &…

LabVIEW超高温高压流变仪测试系统

LabVIEW超高温高压流变仪测试系统 超高温高压流变仪广泛应用于石油、天然气、化工等行业&#xff0c;用于测量材料在极端条件下的流变特性。随着计算机技术、测试技术和电子仪器技术的快速发展&#xff0c;传统的流变仪测试方式已无法满足现代工业的需求。因此&#xff0c;开发…

【全开源】沃德商协会管理系统源码(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的商协会系统&#xff0c;新一代数字化商协会运营管理系统&#xff0c;以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点&#xff0c;实施功能全场景覆盖&#xff0c;一站式解决商协会需求壁垒&#xff0c;有效快速建立…

就业班 第三阶段(CICD) 2401--5.15 day2 自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)

一、平滑发布与灰度发布 **什么叫平滑&#xff1a;**在发布的过程中不影响用户的使用&#xff0c;系统不会因发布而暂停对外服务&#xff0c;不会造成用户短暂性无法访问&#xff1b; **什么叫灰度&#xff1a;**发布后让部分用户使用新版本&#xff0c;其它用户使用旧版本&am…

vector的底层实现与模拟

嗨喽大家好&#xff0c;时隔许久阿鑫又给大家带来了新的博客&#xff0c;关于vector的模拟实现&#xff0c;下面让我们开始今天的学习吧&#xff01; vector的底层实现与模拟 1.关于vector中的插入和删除 2. vector中的拷贝构造和赋值 3.vector的构造函数 4.关于vector中浅…

微信小程序报错:notifyBLECharacteristicValueChange:fail:nodescriptor的解决办法

文章目录 一、发现问题二、分析问题二、解决问题 一、发现问题 微信小程序报错&#xff1a;notifyBLECharacteristicValueChange:fail:nodescriptor 二、分析问题 这个提示有点问题&#xff0c;应该是该Characteristic的Descriptor有问题&#xff0c;而不能说nodescriptor。 …

windows docker desktop 更换镜像存储目录

windows docker desktop 更换镜像存储目录 方法&#xff1a;如图&#xff0c;Browse浏览一个新的目录并选中&#xff0c;确定后&#xff0c;程序会开始stop&#xff0c;在stop完成前&#xff0c;会持续迁移原有镜像到新的位置&#xff0c;你会发现目标位置的磁盘占用空间越来越…

DNS服务的部署与配置(1)

一、DNS的定义 1、域名系统&#xff08;英文&#xff1a;Domain Name System&#xff0c;缩写&#xff1a;DNS&#xff09;是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。 DNS使用UDP端口53。 当前&#xff0…

使用pygame绘制图形

参考链接&#xff1a;https://www.geeksforgeeks.org/pygame-tutorial/?reflbp 在窗口中绘制单个图形 import pygame from pygame.locals import * import sys pygame.init()window pygame.display.set_mode((600,600)) window.fill((255,255,255))# pygame.draw.rect(wind…

WSL调用docker

WSL&#xff08;windows subsystem linux&#xff09;是window系统的原生linux子系统&#xff0c;用于代码开发很方便。 希望在wsl里面运行docker&#xff0c;首先要安装docker在WSL中使用&#xff0c;大部分人的第一想法肯定是用以下命令行安装&#xff08;个人不推荐&#x…

【C语言】指针运算

前言 前面在“走进指针世界”中我已经讲解过指针相关的很多前置知识&#xff0c;其实还有一个很重要的部分就是指针的运算。这篇博客&#xff0c;就让我们一起了解一下指针的运算吧&#xff01; 指针作为变量&#xff0c;是可以进行算术运算的&#xff0c;只不过情况会和整型…

Behind the Code:Polkadot 如何重塑 Web3 未来

2024 年 5 月 17 日 Polkadot 生态 Behind the Code 第二季第一集 《创造 Web3 的未来》正式上线。第一集深入探讨了 Polkadot 和 Web3 技术在解决数字身份、数据所有权和去中心化治理方面的巨大潜力。 &#x1f50d; 查看完整视频&#xff1a; https://youtu.be/_gP-M5nUidc?…