【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.mzph.cn/bicheng/15034.shtml

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

相关文章

【Python爬虫】案例_github模拟登录

import requests import re from datetime import datetimedef login():sessionrequests.session()session.headers {User-Agent :XXXX #写自己的}url1 https://github.com/loginres_1 session.get(url1).content.decode()token re.findall(name"authenticity_token&q…

基于Matlab实现BP神经网络的手写数字识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手写数字识别是计算机视觉和模式识别领域的一个经典问题,具有广泛的应用场景&…

信息安全从业者书单推荐

作为一名网安人,身上肩负的责任是很大的,能力越大,责任也越大,反过来责任越大,能力也必须跟得上。不管是想进这行,还是已经在这行,持续学习肯定是不能缺少的,除了在工作中积累&#…

qt多语言翻译不生效的原因

假设您有QT语言家的基础知识,假设网上那些所有的问题您都已经排查过了,但依然翻译不生效,那么可以看下这篇帖子,其实就一个问题,变量的生命周期,假设QTranslator是一个函数内的变量,且没有被声明…

亿图图示——删除水印

一、文件以PPT格式导出 二、点击水印所在区域,点击多次delete键 三、调整PPT页面尺寸 四、转成PDF 五、PDF转成图片

Spring的Profile功能及其应用场景

Spring的Profile功能是一种条件化配置机制,它允许开发者根据不同的运行环境或条件来定义和使用不同的bean和配置。Profile功能使得Spring应用程序可以灵活地适应不同的部署场景,而无需修改代码。 Profile功能的作用: 环境隔离:可…

从0开始写一个环境保护网站的第3天(JAVAWEB)

1.目标 实现首页的环境保护原因的查询,和底部友情连接部分 2.实现 2.1建立数据库表格(这里数据全是百度查询) 环境保护原因表: 友情连接表:(数据来源https://zhuanlan.zhihu.com/p/696243646&#xff0…

SqlSession是什么?在MyBatis-Spring中有什么应用?

目录 一、SqlSession是什么 二、SqlSession在MyBatis中的应用 三、SqlSession在Spring中的应用 一、SqlSession是什么 SqlSession 是 MyBatis 框架中的一个核心概念,它代表与数据库的一次会话。MyBatis 是一个流行的 Java 持久层框架,用于简化数据库…

c++题目_农场和奶牛

𝐵B 头奶牛 (1≤𝐵≤25000)(1≤B≤25000),有 𝑁(2𝐵≤𝑁≤50000)N(2B≤N≤50000) 个农场,编号 11 到 𝑁N,有 𝑀(𝑁−1≤𝑀≤100000)M(…

【Linux】fork和exec中的信号继承探索

fork和exec中的信号继承探索 一、结论二、代码验证2.1 代码编写2.2 代码执行 三、linux源码验证四、APUE中的验证五、其他 一、结论 fork时子进程会继承父进程的信号处理方式,包括父进程设置信号为SIG_DFL或SIG_IGN或捕获后设置自定义处理函数。exce时子进程会继承…

ChatGPT写作指南:掌握5种高效格式成为写作达人【含实用示例】

1. **简洁指令** 当任务较简单时,可以用一小段话来说明,便于理解和执行。如下例: 背景:我负责运营一个旅游主题的社交媒体账号。 角色:作为一位经验丰富的文案创作专家,我擅长打造引人注目的旅游内容…

【无标题】亚马逊5月24日宣布推出2024出口跨境物流加速器计划

亚马逊中国5月24日郑重宣布启动“2024亚马逊出口跨境物流加速器计划”,旨在依托其世界领先的物流网络和前沿技术,结合本土资源,不断优化跨境物流服务,以强化中国卖家在跨境物流供应链管理方面的能力,进而提升整体效率&…

datagridview复选框选中响应

winform经常用datagridview来处理相关的数据显示,如果datagridview有复选框,我们应该如何处理相关选中响应。选择datagridview的cellcontentclick事件,代码如下: bool isSelectedGridViewRow false; private void da…

深度神经网络——什么是 K 均值聚类?

K 均值聚类 K 均值聚类是 无监督学习在所有无监督学习算法中,K 均值聚类可能是使用最广泛的,这要归功于它的强大功能和简单性。 K-means 聚类到底是如何工作的? 简而言之,K 均值聚类的工作原理是 创建参考点(质心&am…

Halcon 极坐标转换图像

一、概述 先看效果 将圆形的用极坐标转换成矩性然后再进行识别或者其他缺陷检测,最后在还圆到原图中 二、原理: halcon 圆环类缺陷检测的一种方法(极坐标变换法)_halcon缺口检测-CSDN博客 图像极坐标变换与反变换(…

吴恩达深度学习笔记:超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter tuning)3.4-3.5

目录 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第三周: 超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter …

Spark SQL【Java API】

前言 之前对 Spark SQL 的影响一直停留在 DSL 语法上面,感觉可以用 SQL 表达的,没有必要用 Java/Scala 去写,但是面试一段时间后,发现不少公司还是在用 SparkSQL 的,京东也在使用 Spark On Hive 而不是我以为的 Hive O…

ubuntu20.04 开机自动挂载外加硬盘

文章目录 一、问题描述二、操作1. 查找新添盘符2. 格式化硬盘文件系统3. 挂载硬盘4. 开机自动挂载5. 取消挂载6. 查看挂载的硬盘信息 一、问题描述 因电脑使用一段时间后自身硬盘不足,需外加硬盘使得电脑自动识别加载。 二、操作 1. 查找新添盘符 sudo blkid自己…

Linux基础命令详解

Linux基础命令详解 1. ls 解释:列出目录内容用法:ls [选项] [文件名]示例:ls -l(以长格式显示文件信息) 2. cd 解释:更改目录用法:cd [目录名]示例:cd /home(切换到/…

# 全面解剖 消息中间件 RocketMQ-(3)

全面解剖 消息中间件 RocketMQ-(3) 一、RocketMQ – mqadmin 命令介绍 1、mqadmin 管理工具 使用方式 进入 RocketMQ 安装位置,在 bin 目录下执行 ./mqadmin {command} {args} # 进入 RocketMQ 安装目录的 bin 目录下: cd /usr…