当前位置: 首页 > java >正文

python24-匿名函数

课程:B站大学
记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化

匿名函数

  • 匿名函数
  • 实践是检验真理的唯一标准


匿名函数

匿名函数是指没有名字的函数,应用在需要一个函数,但是又不想费神去命名这个函数的场合。

在通常情况下,这样的函数只使用一次。

在 Python 中使用 lambda 表达式创建匿名函数。

lambda 表达式可用于任何需要函数对象的地方。
在语法上,匿名函数只能是单个表达式。
在语义上,它只是常规函数定义的语法糖。
lambda 表达式中不能使用 if、for-in、while、return 等语句, 但可以使用三目运算符
lambda 表达式
格式:

result = lambda [arg1 [, arg2, … , argn]]: expression
result:用于保存 lambda 表达式的引用
[arg1 [, arg2, … , argn]]::可选,指定要传递的参数列表,多个参数间使用英文的逗号 , 进行分隔。
expression:必选,指定一个实现具体功能的表达式。如果有参数,那么在该表达式中将应用这些参数。

示例:

def add(n1, n2):return n1 + n2result = add(1,2)
print(result)add = lambda x,y: x+y
result = add(2,3)
print(result)func = lambda x: x**2  if x > 3 else x**3
print(func(3))

使用场景
通常在这个函数只使用一次的场景下
可以指定短小的回调函数
比如,在学习列表时的 sort() 排序方法,如果是简单的基本数据类型的数据,可以直接进行排序,但如果是复杂结构的数据,需要根据自定义的规则进行排序,此时就可以使用 lambda。

示例:

# 待排序的数据
students = [{'name': 'Alice', 'id': '1001', 'class': 'Class1'},{'name': 'Eve', 'id': '1005', 'class': 'Class2'},{'name': 'Charlie', 'id': '1003', 'class': 'Class1'},{'name': 'David', 'id': '1004', 'class': 'Class2'},{'name': 'Bob', 'id': '1002', 'class': 'Class1'},{'name': 'Frank', 'id': '1006', 'class': 'Class2'}
]
# TypeError: '<' not supported between instances of 'dict' and 'dict'
# students.sort()# 以名字排序
students.sort(key=lambda stu: stu["name"])
for s in students:print(s)# 以ID降序排序
students.sort(key=lambda stu: stu["id"],reverse=True)
for s in students:print(s)
Sorted 函数实现原理students = [{'name': 'Alice', 'id': '1001', 'class': 'Class1'},{'name': 'Eve', 'id': '1005', 'class': 'Class2'},{'name': 'Charlie', 'id': '1003', 'class': 'Class1'},{'name': 'David', 'id': '1004', 'class': 'Class2'},{'name': 'Bob', 'id': '1002', 'class': 'Class1'},{'name': 'Frank', 'id': '1006', 'class': 'Class2'}
]def mySorted(obj, key=None, reverse=False):newStus = []for s in students:for n in newStus:if key:if(key(s) < key(n)):idx = newStus.index(n)newStus.insert(idx, s)breakelse:if (s < n):idx = newStus.index(n)newStus.insert(idx, s)breakelse:newStus.append(s)return newStus if reverse else newStus[::-1]# students = mySorted(students, key=lambda s: s["name"])
# students.sort(key=lambda s: s["name"])
students = [1,4,2,6,7,8,4,3,3]
students = mySorted(students, reverse=True)
print(students)
for s in students:print(s)

匿名函数好处:用于一次性处理的函数,用lambda 表达式方便运算
在这里插入图片描述

实践是检验真理的唯一标准

http://www.xdnf.cn/news/4808.html

相关文章:

  • 2.5 特征值与特征向量
  • 二叉树的基本操作
  • es6/7练习题1
  • 微软推动智能体协同运作:支持 A2A、MCP 协议
  • mqtt选型,使用
  • 关键字where
  • Docker学习笔记
  • deeplabv3+街景图片语义分割,无需训练模型,看不懂也没有影响,直接使用,cityscapes数据集_25
  • python小说网站管理系统-小说阅读系统
  • 什么是HTML、CSS 和 JavaScript?
  • 电容的基本介绍
  • WPF 子界面修改后通知到主页面
  • 嵌入式 C 语言控制语句
  • 44 Python MySQL(PyMySQL 驱动)
  • Java的对象头:原理与源码详解
  • python实现的音乐播放器
  • 企业生产安全管理平台的功能架构
  • Java后端程序员学习前端之JavaScript
  • PHP反序列化漏洞
  • CBO和HBO区别及介绍
  • 【包含例题P1955、P1892、P2024、P1196】并查集、扩展域并查集、带权并查集
  • arcmap栅格数据地理坐标转换,从WGS84坐标到2000
  • 深入理解Bitmap及Roaring Map:原理与应用详解
  • PPIO × GPT4All:构建本地知识库,让AI更懂你
  • 从单智到多智:深度拆解基于MetaGPT的智能体辩论
  • AI原生手机:三大技术阵营的终极对决与未来展望
  • 使用Maple Flow创建电路最坏情况分析WCCA工作表
  • 【前端】每日一道面试题2:解释CSS盒模型的box-sizing属性,以及它在响应式布局中的作用。
  • 字符串哈希(算法题)
  • VR 南锣鼓巷:古老街区的数字化绘卷与沉浸式遨游​