【Python基础】Python lambda(简洁与高效的匿名函数)

news2025/5/21 20:40:54

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢!

文章目录

    • 一、前言
    • 二、lambda函数的基本概念
    • 三、lambda函数的应用实例
        • 3.1 在列表排序中使用lambda函数
        • 3.2 在map()函数中使用lambda函数
        • 3.3 在filter()函数中使用lambda函数
        • 3.4 在reduce()函数中使用lambda函数
        • 3.5 在自定义函数中使用lambda函数
    • 四、lambda函数的优势与局限
        • 4.1 优势
        • 4.2 局限
    • 五、总结

一、前言

​ 在Python编程中,lambda函数是一种强大的工具,用于创建简洁的匿名函数。它们在需要快速定义简单函数时特别有用,尤其在与其他高阶函数结合使用时,能够显著提升代码的效率和可读性。

本文将详细介绍lambda函数的基本概念、语法及其多种应用实例,帮助读者更好地理解和使用这一功能。

  • 什么是Python?

    Python是由荷兰人吉多·范罗苏姆于1990年初设计的一门高级编程语言,该语言应用领域非常广泛,尤其在数据科学、人工智能、游戏开发等领域,它已经成为最受欢迎的程序设计语言之一,非常适合新手学习。

    Python语言标准库官方使用手册:https://docs.python.org/zh-cn/3/library/turtle.html#turtle-methods

  • Python语言有哪些特点?

    1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

    2.易于阅读:Python代码定义的更清晰。

    3.易于维护:Python的成功在于它的源代码是相当容易维护的。

    4.丰富的库:Python的最大的优势之一具有丰富的标准库,并且跨平台的,在UNIX,Windows和Mac兼容很好。

    5.面向对象:Python支持面向对象编程,在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

    6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

    7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

    8.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

    在这里插入图片描述

二、lambda函数的基本概念

lambda函数,也称为匿名函数,是一种无需命名的简单函数。它们使用lambda关键字定义,并且通常用于需要一个短小函数而不想正式定义一个函数的场合。

lambda函数的基本语法如下:

lambda arguments: expression
  • lambda 是关键字,用于定义匿名函数;
  • arguments 是参数,可以有多个,用逗号分隔;
  • expression 是表达式,该表达式的计算结果即为函数的返回值。

例如,下面是一个简单的lambda函数,设置一个函数参数 a,函数计算参数 a 加 10的和:

x = lambda a : a + 10

print(x(5)) # 输出 15

例如,下面是一个简单的lambda函数,它计算两个数的和:

add = lambda x, y: x + y

print(add(2, 3))  # 输出:5

三、lambda函数的应用实例

lambda 函数通常与内置函数如 map()、filter() 和 reduce() 一起使用,以便在集合上执行操作。

3.1 在列表排序中使用lambda函数

lambda函数在排序操作中非常有用。

例如,我们可以使用lambda函数对列表中的元组按特定元素排序:

data = [(3, 1), (1, 2), (5, 0), (4, 2)]

data_sorted = sorted(data, key=lambda x: x)

print(data_sorted)  # 输出:[(1, 2), (3, 1), (4, 2), (5, 0)]
3.2 在map()函数中使用lambda函数

map() 函数用于将一个函数应用于一个可迭代对象的每个元素,并返回一个迭代器。

lambda函数经常与 map() 函数一起使用。

例如,使用lambda函数与 map() 函数一起,求平方。

numbers = [1, 2, 3, 4, 5]

squared = list(map(lambda x: x**2, numbers))

print(squared)  # 输出: [1, 4, 9, 16, 25]
3.3 在filter()函数中使用lambda函数

filter() 函数用于过滤可迭代对象中的元素。它接受一个函数和一个可迭代对象,返回一个过滤后的迭代器。

lambda函数常用于定义过滤条件。

例如,使用 lambda 函数与 filter() 一起,筛选偶数:

numbers = [1, 2, 3, 4, 5, 6, 7, 8]

even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

print(even_numbers)  # 输出:[2, 4, 6, 8]
3.4 在reduce()函数中使用lambda函数

reduce() 函数用于对可迭代对象中的元素进行累计操作。它接受一个函数和一个可迭代对象,并返回一个单一的累积值。

例如,使用 reduce() 和 lambda 表达式演示如何计算一个序列的累积乘积:

from functools import reduce
 
numbers = [1, 2, 3, 4, 5]
 
# 使用 reduce() 和 lambda 函数计算乘积
product = reduce(lambda x, y: x * y, numbers)
 
print(product)  # 输出:120
3.5 在自定义函数中使用lambda函数

lambda函数可以嵌入到其他函数中,用于定义短小的内联函数。

例如,在一个计算器函数中使用lambda函数:

def make_incrementor(n):
    return lambda x: x + n

increment_by_2 = make_incrementor(2)

print(increment_by_2(5))  # 输出:7

四、lambda函数的优势与局限

4.1 优势
  • 简洁:lambda函数可以在一行内定义,适用于简单的操作。

  • 灵活:可以与高阶函数(如 map()、filter()、reduce())结合使用。

  • 匿名:不需要为简单函数命名,避免命名冲突。

4.2 局限
  • 可读性:lambda函数过于简洁,可能会降低代码的可读性,尤其是对于复杂操作。

  • 调试困难:由于没有名称,lambda函数在调试时不易追踪。

五、总结

​ lambda函数是Python中一个强大的工具,适用于定义简单的匿名函数。通过本文的介绍,我们了解了lambda函数的基本语法及其多种应用场景,包括列表排序、map()、filter() 和 reduce() 等高阶函数中的使用。

​ 虽然lambda函数有其局限性,但在合适的场合使用它们可以使代码更加简洁和高效。希望通过本文,读者能够更好地理解和应用lambda函数,编写出更加优雅的Python代码。

如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)

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

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

相关文章

(批处理)设置延时+设置关机倒计时

使用方式:建立一个文本文件夹,将文件扩展名改为.bat,右键单击后编辑,将代码复制进去。 将文件保存 echo off echo 三秒后会出现一个提示自动关机ping -n 3 127.0.0.1 >nul rem 实现的功能是在这里停3秒再继续往下执行 rem 以…

OpenCore Legacy Patcher 2.0.0 发布,83 款不受支持的 Mac 机型将能运行最新的 macOS Sequoia

在不受支持的 Mac 上安装 macOS Sequoia (OpenCore Legacy Patcher v2.0.0) Install macOS on unsupported Macs 请访问原文链接:https://sysin.org/blog/install-macos-on-unsupported-mac/,查看最新版。原创作品,转载请保留出处。 作者主…

【Linux】多路转接epoll

一、I/O多路转接 poll 1.1 poll函数接口 函数原型 函数参数 fds:是一个poll函数监听的结构列表,每一个元素中包含了三部分内容:文件描述符,监听的事件集合,返回的事件集合。nfds:表示的是fds数组的长度tim…

VUE + NODE 历史版本安装

以node 12.20.0为例子,想下载哪个版本,后面写哪个版本 https://registry.npmmirror.com/binary.html?pathnode/v12.20.0/ 安装国内镜像7.1.0 cnpm npm install -g cnpm7.1.0 -g --registryhttps://registry.npmmirror.com 安装vue脚手架4.5.15 cnpm …

【有啥问啥】深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法

深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法 0. 引言 Markov Chain Monte Carlo(MCMC)是一类用于从复杂分布中采样的强大算法,特别是在难以直接计算分布的情况下。它广泛应用于统计学、机器学习…

【linux基础】linux中的开发工具(4)--调试器gdb的使用

目录 前言一,背景二,gdb的使用1. 启动 gdb 调试器:2. 罗列代码信息3. 运行程序4. 有关断点的操作(1) 打断点(2) 查看断点(3) 删除断点(4) 在一次调试中,断点是递增的(5) 关闭断点(6) 开启断点(7) 逐过程调试,相当于 F1…

我与Linux的爱恋:进程|进程的查看与管理|创建进程

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:Linux的学习 ​ 文章目录 一、进程的概念1.什么是进程2.在这里插入代码片多进程管理3.描述进程-PCB 2.查看进程与管理进程1.使用指令查看进程2.通过系统调用函数查看pid3.杀进程4.ppid&…

如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?

优质博文:IT-BLOG-CN 问题 我在 macOS 中使用 vscode 版本 1.92.2,并安装了Java 扩展包v0.29.0。当我打开command click或right click->Go to definition一个没有源代码的类时,vscode 会使用 FernFlower 反编译器打开 .class 文件。但…

一步一步自制py脚本并且并且修改为exe可执行文件教学外附带SHA-1解密exe文件资源

第一步:安装 Python 下载 Python:访问 Python 官网 下载并安装最新版本的 Python。安装时选择添加到环境变量 PATH:在安装过程中,确保勾选“Add Python to PATH”选项。 第二步:编写 Python 脚本 创建一个新的 Pyth…

HTB-Base(strcmp函数绕过、sudo -l提权)

前言 各位师傅大家好,我是qmx_07,今天给大家讲解Base靶场,起点内容到此完结 渗透过程 信息搜集 服务器开放了22SSH服务 和 80HTTP服务 目录爆破 通过目录扫描出/login 和/asserts文件夹 发现/login 拥有目录遍历漏洞login.php.swp 是使用…

Mysql_使用简介

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

循环练习 案例

swich新特性 jdk12 穿透 逢七过 //含有七和被七整除舍去 public class test1 {public static void main(String[] args){for (int i 1; i <100 ; i) {if(i%70||i%107||i/107){continue;}System.out.println(i);}} } 求平方根 //输入大于2的整数&#xff0c;求平方根&…

AI基础 L22 Uncertainty over Time I 时间的不确定性

Time and Uncertainty 1 Time and Uncertainty States and Observations • discrete-time models: we view the world as a series of snapshots or time slices • the time interval ∆ between slices, we assume to be the same for every interval • Xt: denotes the se…

C++编译环境(IDE)推荐及安装

IDE是什么 嗨嗨嗨&#xff0c;我又来水博文了 今天来给大家推荐几款好用的IDE IDE是集成开发环境&#xff08;Integrated Development Environment&#xff09;的缩写&#xff0c;是一种软件应用程序&#xff0c;提供了用于软件开发的各种工具和功能&#xff0c;包括代码编辑…

windows C++ 并行编程-PPL 中的取消操作(一)

并行模式库 (PPL) 中取消操作的角色、如何取消并行工作以及如何确定取消并行工作的时间。 运行时使用异常处理实现取消操作。 请勿在代码中捕捉或处理这些异常。 此外&#xff0c;还建议你在任务的函数体中编写异常安全的代码。 例如&#xff0c;可以使用获取资源即初始化 (RA…

LidarView之定制版本号

介绍 LidarView软件需要关注2个版本号&#xff1a;1.Application版本号&#xff1b;2.安装包版本号 Application版本号 改变LV_VERSION_FULL可达到改变软件版本号的目的 SET(LV_VERSION_FULL "V1.3.0")标题栏版本号 关于对话框 安装包版本号 在Inno Setup Compi…

【退役之再次线上部署】Spring Boot + VUE + Nginx + MySQL

这篇博客写在凌晨 4 点 20 分&#xff0c;这个时候我刚线上部署完成 web 项目&#xff0c;自己写的全栈项目 这个点儿&#xff0c;也睡不着了&#xff0c;索性就写篇博客记录一下 一、踩坑实录 这个是 最重要的&#xff0c;所以写在前面 Nginx 配置文件 location location /a…

如何做系统架构?从动态系统思考的角度

在动态系统思考的背景下&#xff0c;系统架构不再只是一个静态的、结构化的设计&#xff0c;而是一个随着时间推移、基于不同要素互动产生涌现行为的动态过程。系统架构师的任务不仅仅是定义系统的形态和结构&#xff0c;更是通过剖析系统的互动网络、功能涌现和使用场景&#…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《计及抢修人员调度的配电网信息-物理协同恢复策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

个人随想-向量数据库,你到底应该选择谁?

随着大模型的新起&#xff0c;vectorstore这1、2年也非常的火。从以前只能用chroma到现在几十种向量数据库&#xff0c;选都选不过来。 以我接触过的很多公司来说&#xff0c;他们去选择向量数据库的时候&#xff0c;很多都和迷茫&#xff0c;不知道应该选择哪个向量数据库&am…