IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python】Lambda表达式 -> 正文阅读

[Python知识库]【Python】Lambda表达式

?博文作者 wangzirui32
💖 喜欢的可以 点赞 收藏 关注哦~~
👏 我的第163篇原创作品
👉本文首发于CSDN,未经许可禁止转载


hello,大家好,我是wangzirui32,今天我们来学习Python中Lambda表达式,开始学习吧!

1. 什么是Lambda

Lambda在Python编程中使用的频率非常高,这种表达式其实是Python中的一类特殊的定义函数的形式,使用它可以定义一个匿名函数。当你需要一个简单功能的函数,Lambda能满足大部分需求。

2. Lambda语法

Lambda语法格式如下:

lambda 参数1, 参数2, ...., 参数n: 执行语句

示例代码:

# 计算x的三次方
f = lambda x: x**3
print(f(3))

输出:

27

注意,lambda语句中,冒号(:)后执行一个表达式,不需要用return返回结果,你可以使用if语句:

# 判断是否为偶数 是偶数返回True 否则返回False
f = lambda x: True if x % 2 == 0 else False
print(f(10))
print(f(11))

输出:

True
False

也可以指定多个参数:

# 求x y z的平均值
f = lambda x, y, z: (x+y+z)/3
print(f(11, 45, 14))

输出:

23.33333333333

3. Lambda高阶用法

3.1 排序

现有如下列表:

students = [{"name": "John", "age": 10, "score": 87},
            {"name": "Sally", "age": 9, "score": 100},
            {"name": "James", "age": 13, "score": 95}]

需求:将列表中的学生信息分别按年龄和分数进行排序。
我们可以使用lambda表达式和排序函数达成需求,代码:

students = [{"name": "John", "age": 10, "score": 87},
            {"name": "Sally", "age": 18, "score": 100},
            {"name": "James", "age": 13, "score": 95}]

# 这里的lambda返回学生的年龄作为排序依据
students.sort(key=lambda student: student['age'])
print("按年龄排序:", students)

# 这里的lambda返回学生的分数作为排序依据
students.sort(key=lambda student: student['score'], reverse=True)
print("按分数排序:", students)

输出结果:

按年龄排序: [{'name': 'John', 'age': 10, 'score': 87}, ......]
按分数排序: [{'name': 'Sally', 'age': 18, 'score': 100}, ......]

3.2 序列映射

现有如下列表:

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

需求:将列表内的所有数字元素全部执行一次立方操作。
我们可以结合map函数达成需求,代码:

numbers = [1, 2, 3, 4, 5, 6, 7]
# 这里的lamdba返回x的立方
new_numbers = list(map(lambda x: x**3, numbers))
print(new_numbers)

输出:

[1, 8, 27, 64, 125, 216, 343]

map函数可以用来映射序列,调用参数如下:

map(映射函数, 序列列表)

映射过程类似于:

numbers1234567
映射???????
new_numbers182764125216343

3.3 过滤元素

现有如下列表:

numbers = [11, 4, 5, 14, 10, 32, 50, 19, 20]

需求:过滤出列表中10以上的偶数
我们可以使用filter内置函数,代码:

numbers = [11, 4, 5, 14, 10, 32, 50, 19, 20]
new_numbers = list(filter(lambda x: x % 2 == 0 and x >= 10, numbers))  
print(new_numbers)

输出:

[14, 10, 32, 50, 20]

在这个lambda表达式内,我们限定了条件x % 2 == 0 and x >= 10,如果2个条件都满足,表达式结果为True,否则为False
整个过程类似于:

numbers1145141032501920
是否符合条件FalseFalseFalseTrueTrueTrueTrueFalseTrue
new_numbersNoneNoneNone14103250None20

3.4 指定相邻元素的结合条件

现有如下列表:

students = ["John", "Jack", "James", "Malfoy", "Sally"]

需求:将每两个学生姓名之间添上","连接并输出。
我们可以使用reduce函数,代码:

from functools import reduce
students = ["John", "Jack", "James", "Malfoy", "Sally"]
print(reduce(lambda a, b: "{} , {}".format(a, b), students))

输出:

John , Jack , James , Malfoy , Sally

3.5 函数装饰器

当一个函数返回lambda匿名函数时,这就类似于Python中的函数装饰器了,示例代码:

def welcome_text(text):
    return lambda username: "Welcome {}!\n{}".format(username, text)
    
welcome_user = welcome_text("这里是wangzirui32的编程课堂!")
print(welcome_user("Malfoy"))

输出:

Welcome Malfoy!
这里是wangzirui32的编程课堂!

🎉🎉🎉 好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:00:05  更:2022-06-29 19:00:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:43:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码