【Python 匿名函数】零基础也能轻松掌握的学习路线与参考资料

news2024/11/27 12:33:10

在这里插入图片描述

Python 匿名函数是一种特殊的函数,也称为 lambda 函数。它允许我们创建一种简单的函数,一行代码就可以搞定。可能你会发现,在使用Python时,经常可以看到lambda关键字,以lambda开头的就是匿名函数。本文将详细介绍Python 匿名函数的学习路线,包括基础概念、优点、使用方法、应用实例以及参考资料和优秀实践等方面。

一、基础概念

Python 匿名函数是一种没有名称的函数,即没有使用 def 或者别名进行声明的函数。也就是说,没有办法把这个函数的调用再次分配给其他函数或者变量。它的语法结构如下:

lambda argument_list: expression

其中, argument_list是形式参数列表,可以是任何数量的变量;expression是一个表达式,也可以是任何数量的表达式,也可以包含有 if 和 for 语句。

二、优点

  1. 简介清晰

Python 匿名函数只有一行代码,没有复杂的语法结构,非常容易理解和记忆。

  1. 方便快捷

Python 匿名函数可以在任何需要函数的地方使用,而且不用给它起名字。这样在代码编写上,可以很方便地节省时间。

  1. 可读性

Python 匿名函数可以通过一行代码表示复杂的函数,增强代码可读性。

三、使用方法

Python 匿名函数可以直接使用 lambda 关键字定义,语法格式为 lambda arguments: expression。其中 arguments 表示匿名函数的参数列表,而 expression 则表示匿名函数的返回值。

  1. 传入参数

首先,我们需要通过匿名函数传入一些参数。这里我们示例传入了一个 x 参数,代码如下:

f = lambda x: x*2
print(f(4))

以上代码输出结果为:8

  1. 接收多个参数

lambda 支持接收多个参数,但是它们之间必须由逗号分隔。我们来看一下下面的实例:

f = lambda x, y: x + y
print(f(2, 3))

以上代码输出结果为:5

  1. 带默认值参数

除了传入参数,我们还可以通过 lambda 函数的形参列表设置默认值参数。这里我们示例传入一个 x 参数和一个默认值参数 y,代码如下:

f = lambda x, y=2: x*y
print(f(3))

以上代码输出结果为:6

  1. 函数作为参数

在实际编程中,我们经常遇到需要把函数当做参数传进另一个函数里处理的情况,这时可以使用 lambda 函数进行简单的处理。如果要传入一个处理平方的函数,代码如下:

f = lambda x, y: y(x*x)
print(f(2, lambda x:x**2))

以上代码输出结果为:8

四、应用实例

Python 匿名函数适用于一些简单的场合,不太适合写复杂的运算和逻辑。下面,我们将介绍匿名函数的一些常见应用。

  1. 排序

在 Python 中,我们可以使用 sort() 函数对列表进行排序,其中 key 参数可以传入一个函数作为排序的关键字。如果我们向根据列表的元素的第二个元素进行排序,可以如下面的代码:

a = [[1, 2], [4, 1], [9, 10], [13, 5]]
a.sort(key=lambda x: x[1])
print(a)

以上代码输出结果为:[[4, 1], [13, 5], [1, 2], [9, 10]]

  1. 过滤

在 Python 中,我们可以使用 filter() 函数过滤掉一系列的元素。通常情况下我们会使用 def 函数定义一个 filter 函数。但我们这里可以通过 lambda 函数来替代 def 函数。如下代码,我们定义一个 filter_results 函数,返回奇数列表:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filter_results = filter(lambda x: x % 2 != 0, numbers)
print(list(filter_results))

以上代码输出结果为:[1, 3, 5, 7, 9]

  1. 映射

在 Python 中,我们可以使用 map() 函数映射一系列的元素,通常情况下我们会使用 def 函数定义一个 map 函数。但我们这里可以通过 lambda 函数来替代 def 函数。通过以下代码,我们将数字列表中的每个数字都乘以 2:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
double_nums = list(map(lambda x: x * 2, nums))
print(double_nums)

以上代码输出结果为:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

  1. 小结

经过以上的应用实例,我们可以看到,Python 匿名函数可以用于排序过程、过滤列表、映射序列等场合,都特别适合使用。

五、参考资料

本文所介绍的 Python 匿名函数,属于 Python编程的简单难度,适合初学者使用。如果你对 Python 匿名函数有更多的需求,可以看一下以下参考资料:

  • 《Python 基础教程》
  • 《Python 编程:从入门到实践》
  • 《Python Cookbook》

六、优秀实践

  1. 带有条件语句的匿名函数:
f = lambda x: x ** 2 if x > 5 else x ** 3
print(f(4))   # 64
print(f(6))   # 36
  1. lambda表达式计算三角形面积:
import math

area = lambda a, b, c: math.sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))/4
print(area(3,4,5))  # 输出: 6.0
  1. 将列表中的空字符串去掉:
l = ['hello', '', 'world', '', '', 'Python']
result = list(filter(lambda x: x != '', l))
print(result)  # ['hello', 'world', 'Python']
  1. 对列表进行排序:
students = [{'name': 'Tom', 'score': 76}, {'name': 'Jack', 'score': 65}, {'name':'Rose', 'score': 90}]
students.sort(key=lambda x: x['score'])
print(students)  # [{'name': 'Jack', 'score': 65}, {'name': 'Tom', 'score': 76}, {'name': 'Rose', 'score': 90}]

以上是 Python 匿名函数的学习路线,掌握了这个简单的知识点,对于日常的编程将会带来很大的帮助。

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

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

相关文章

在一台电脑上配置多个Git账号,工作、生活两不误

文章目录 先 Unset global 配置生成 SSH Key 并配置到 GitHub多账号用 config 管理 先 Unset global 配置 任意文件夹下 Git Bash Here 然后输入如下命令来 unset git config --global --unset user.name git config --global --unset user.email git config --global --unset…

LabVIEW编程开发汽油中各种掺假物浓度⽔平的检测

LabVIEW编程开发汽油中各种掺假物浓度⽔平的检测 主要目的是使用LabVIEW中的密度法找到汽油中掺杂物的浓度。已经对许多技术进行了研究,以发现汽油中的掺杂物。例如蒸馏试验、化学制造商试验、蒸发试验、气相色谱法可以专门测量掺杂物。甚至有数字密度计来测量汽油…

深圳旧改投资_一秒读懂什么是确权?物业权利人核实的基础要点。

权利人核实常见问题 为什么要做历史违建物业权利人核实? 2021年3月1日正式实施的《深圳经济特区城市更新条例》,区城市更新部门应当在物业权利人更新意愿核实阶段组织区规划土地监察机构、辖区街道办事处和原农村集体经济组织继受单位对历史违建物业权…

【数据可视化】数据可视化Canvas

1、了解Canvas ◼什么是Canvas ---- Canvas 最初由Apple于2004 年引入,用于Mac OS X WebKit组件,为仪表板小部件和Safari浏览器等应用程序提供支持。后来,它被Gecko内核的浏览器(尤其是Mozilla Firefox)&#xff0c…

上位机Qt应用程序与MCU板子之间的串口数据传输算法,举例1字节、2字节、4字节正负数。再加qDebug的重定向显示打印数据。

串口之间的数据传输算法 前言【1】Qt界面设计图【2】串口char型举例串口收发正数举例串口收发负数举例 【3】串口short 型举例大端序和小端序 串口收发正数举例串口收发负数举例 【4】串口int型举例串口收发正数举例串口收发负数举例串口收发正负数(简洁版推荐&…

大数据分析的Python实战指南:数据处理、可视化与机器学习【上进小菜猪大数据】

上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 引言: 大数据分析是当今互联网时代的核心技术之一。通过有效地处理和分析大量的数据,企业可以从中获得有价值的洞察,以做出更明智的决策。本文将…

Mujoco210 Ubuntu 22.04配置安装(一)

目录 .1 下载 1.1 解压 1.2 许可问题 1.3 环境配置 1.4 测试mujoco .2 安装mujoco-py 2.1 conda激活虚拟环境\或新创建一个环境 2.2 下载mujoco-py ​编辑 2.3 配置环境变量 2.4 测试mujoco-py 2.5 测试时的一些报错处理 2.5.0 command /usr/bin/gcc failed with…

Linux操作系统——第三章 基础IO

目录 接口介绍 open 文件描述符fd 0 & 1 & 2 文件描述符的分配规则 重定向 FILE 理解文件系统 inode ​编辑 理解硬链接 软链接 动态库和静态库 静态库与动态库 生成静态库 库搜索路径 生成动态库 使用动态库 运行动态库 使用外部库 接口介绍 o…

(顶刊复现)配电网两阶段鲁棒故障恢复(matlab实现)

参考文献: X. Chen, W. Wu and B. Zhang, "Robust Restoration Method for Active Distribution Networks," in IEEE Transactions on Power Systems, vol. 31, no. 5, pp. 4005-4015, Sept. 2016, doi: 10.1109/TPWRS.2015.2503426. 1.研究背景 1.1摘…

2023 Navicat for Redis 与 Navicat Premium 16.2 现已正式发布 | 释放 Redis 全部潜能

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

【C++】 Lambda表达式详解

▒ 目录 ▒ 🛫 问题描述环境 1️⃣ 什么是Lambda表达式Lambda 表达式的各个部分 2️⃣ 优缺点优点缺点 3️⃣ 使用场景在线C工具STL算法库STL容器中需要传递比较函数(示例失败了)多线程示例 4️⃣ Lambda表达式与函数指针的比较5️⃣ 捕获列表…

KISS复盘法

KISS复盘法 KISS复盘法是一种科学的项目复盘方法,能够把过往经验转化为实践能力,以促进下一次活动更好地展开,从而不断提升个人和团队的能力! 模型介绍 【复盘】原是围棋术语,本意是对弈者在下完一盘棋之后&#xff0…

距离保护原理

距离保护是反映故障点至保护安装处的距离,并根据距离的远近确定动作时间的一种保护。故障点距保护安装处越近,保护的动作时间就越短,反之就越长,从而保证动作的选择性。测量故障点至保护安装处的距离,实际上就是用阻抗…

Spring Boot banner详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解 自定义banner Spring …

快速排序算法的编码和优化

快速排序的基本思路是: 先通过第一趟排序,将数组原地划分为两部分,其中一部分的所有数据都小于另一部分的所有数据。原数组被划分为2份通过递归的处理, 再对原数组分割的两部分分别划分为两部分,同样是使得其中一部分…

springboot+java高校教材征订管理系统

教材管理系统从功能、数据流程、可行性、运行环境等方面进行需求分析。对教材管理系统的数据库、功能进行了详细设计。分析了主要界面设计和相关组件设计,对教材管理系统的具体实现进行了介绍。 采用Java技术,从数据库中获取数据、向数据库中写入数据&am…

Linux 4.10 将带来深远影响的三项小改变

Linux的演进永不停歇。Linus Torvalds一直在努力工作,希望能够在新的内核版本当中(4.11)融入更多变化。不过在目前的Linux 4.10中,我们同样发现了三组能够有效提升性能并实现多种前所未有功能集的变更。 Linux的演进永不停歇。Linus Torvalds一直在努力…

如何快速写出一个完整的测试用例

一、前言 测试工作中最为基础核心的内容就是设计测试用例,我们一般会认为数量越少、发现缺陷越多的用例就是好的用例。那么,怎样才能设计出好的测试用例呢?本次专题就向大家介绍如何编写一个完整且靠谱的测试用例。 二、测试用例的重要性 …

使用IPSW文件将iOS系统从Beta恢复到稳定正式版教程

起因 作为一名iOS开发者,为了拥抱新系统(手贱),将开发机升级到了最新的iOS 17 Beta版本,从而导致使用现有的Xcode无法成功配对该版本系统。故准备想方设法回滚到原先的iOS 16.5稳定版 回滚方式 若要将iOS设备回退至…

【MySQL高级篇笔记-数据库其它调优策略(中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、数据库调优的措施 1、调优的目标 2、如何定位调优问题 3、调优的维度和步骤 二、优化MySQL服务器 1、优化服务器硬件 2、优化MySQL的参数 三、优化数据库结构 1、拆分表:冷热数据分离 2、增加中间表 3、增加…