网易首页 > 网易号 > 正文 申请入驻

Python:匿名函数 lambda 及其在高阶函数中的应用

0
分享至

在 Python 中,lambda 是一种用于创建匿名函数的表达式。它语法简洁、灵活高效,常用于函数作为参数传递的场景,尤其在处理简洁逻辑或与高阶函数结合时非常实用。

一、lambda 函数的定义与语法

lambda 函数是一种没有函数名的函数,通常用于临时、一次性使用的场景。

1、lambda 的语法结构

lambda 参数1, 参数2, ... : 表达式

语法说明:

(1)关键字 lambda 是关键字,表示定义一个匿名函数。

(2)冒号 : 用于分隔参数和表达式。

(3)右侧只能是单个表达式,该表达式的结果会被自动返回(不需要写 return)。

(4)整个 lambda 表达式的本质是一个函数对象,可以赋值给变量、作为参数传递、作为返回值等。

2、使用示例

(1)与定义普通函数对比。

# 使用 lambda 定义平方函数
square = lambda x: x * x
print(square(3))  # 输出 9

# 等价的普通函数定义
def square(x):
    return x * x

将 lambda 表达式赋给变量后,即可像调用普通函数一样来使用。

(2)可以有一个或多个参数。

# 多参数加法
add = lambda x, y: x + y
print(add(3, 5))  # 输出: 8

(3)右侧只能是单个表达式,不能包含赋值语句、循环或语句块。

# 在 lambda 中使用条件表达式
max_func = lambda a, b: a if a > b else b
print(max_func(3, 7))  # 7

# 错误示例:lambda 中不能有赋值语句(= 是语句,不是表达式)
lambda x: x = x + 1  # SyntaxError

二、lambda 与高阶函数

在 Python 中,高阶函数(Higher-Order Function)是指至少满足以下两点之一的函数:

(1)接受一个或多个函数作为参数。

(2)返回一个函数作为结果。

由于整个 lambda 表达式本质上是一个函数对象,完全可以作为高阶函数的参数或返回值。

1、lambda 作为函数的参数

示例 1:作为普通函数的参数

def apply_twice(func, x):
    return func(func(x))
    
print(apply_twice(lambda x: x + 1, 3))  # 输出:5

示例 2:嵌套 lambda

adder = lambda x: lambda y: x + y
add5 = adder(5)
print(add5(3))  # 8

2、lambda 作为函数的返回值

def make_adder(n):
    return lambda x: x + n
add5 = make_adder(5)
print(add5(3))  # 8

三、lambda 在常用高阶函数中的应用

Python 提供了很多支持函数作为参数的内置函数,如 map()、filter()、sorted()、reduce() 等,它们都可与 lambda 搭配使用。

1、map() :批量映射转换

map(function, iterable)

map() 函数可对 iterable(可迭代对象,如列表、元组、字符串等)中的每个元素,应用 function 函数,返回映射后的新迭代器。

# 对序列中每个元素进行操作
nums = [1, 2, 3]
squares = list(map(lambda x: x ** 2, nums))
print(squares)  # [1, 4, 9]

2、sorted():按指定依据排序

sorted(iterable, *, key=None, reverse=False)

sorted()返回一个排序后的新列表。可通过 key (用于指定排序依据的函数)指定排序规则,reverse=True 表示降序。

# 示例 1:按字符串长度排序
words = ['apple', 'pear', 'banana', 'kiwi']

# 排序依据是字符串的长度
result = sorted(words, key=lambda x: len(x))
print(result)  # ['kiwi', 'pear', 'apple', 'banana']

# 示例 2:按元组中第 2 项排序
students = [('Tom', 88), ('Jerry', 95), ('Lucy', 78)]

# 按成绩(元组的第二项)排序
result = sorted(students, key=lambda x: x[1])
print(result)

# 输出: [('Lucy', 78), ('Tom', 88), ('Jerry', 95)]

# 示例 3:按字典中某个字段排序
users = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob', 'age': 25},
    {'name': 'Charlie', 'age': 35}
    ]
    
# 按 age 升序排序
result = sorted(users, key=lambda x: x['age'])
print(result)

3、filter():条件筛选

filter(function, iterable)

filter() 函数可对 iterable 中的每个元素保留那些使 function(x) 为 True 的元素。

# 筛选序列中的元素
nums = [1, 2, 3, 4, 5, 6]
even = list(filter(lambda x: x % 2 == 0, nums))
print(even)  # [2, 4, 6]

4、reduce() :连续归约计算

reduce(function, iterable[, initializer])

reduce() 函数可将函数 function 依次作用于 iterable 中的元素,从而将其归约成一个值。可选的 initializer 会作为初始值参与计算。

# 计算乘积
from functools import reduce

nums = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, nums)
print(product)  # 24

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
2年内5连败 38岁丁俊晖2-6不敌世界第1:连遭2个3连鞭 尴尬一轮游

2年内5连败 38岁丁俊晖2-6不敌世界第1:连遭2个3连鞭 尴尬一轮游

风过乡
2026-01-15 06:02:08
中泰U23交锋全场数据:控球率四六开,射门11-10&射正2-4

中泰U23交锋全场数据:控球率四六开,射门11-10&射正2-4

懂球帝
2026-01-14 21:57:35
成龙女儿吴卓林结婚现场曝光,紧握爱人的手,洋溢着甜蜜笑容!

成龙女儿吴卓林结婚现场曝光,紧握爱人的手,洋溢着甜蜜笑容!

娱乐团长
2026-01-13 15:39:28
央行:1月15日将开展 9000亿元买断式逆回购操作

央行:1月15日将开展 9000亿元买断式逆回购操作

每日经济新闻
2026-01-14 20:57:20
一场2-6,输球不可怕,可怕是丁俊晖赛后一席话,心气彻底打没了

一场2-6,输球不可怕,可怕是丁俊晖赛后一席话,心气彻底打没了

金风说
2026-01-15 00:37:55
发现一个奇怪现象:越是独来独往、没有朋友、不合群的人,人品往往越没问题,慢慢你就知道了

发现一个奇怪现象:越是独来独往、没有朋友、不合群的人,人品往往越没问题,慢慢你就知道了

LULU生活家
2026-01-11 17:53:51
疯狂的9-0!1人帽子戏法+造5球,欧冠球队踢疯了强势晋级

疯狂的9-0!1人帽子戏法+造5球,欧冠球队踢疯了强势晋级

乌龙球OwnGoal
2026-01-14 09:15:47
中方对萧美琴下达封杀令,向欧洲发出照会后,加拿大议员取消窜台

中方对萧美琴下达封杀令,向欧洲发出照会后,加拿大议员取消窜台

吃货的分享
2026-01-15 05:37:44
2026年养老金迎利好消息!按调整公式,1956年以前人员或调整更多

2026年养老金迎利好消息!按调整公式,1956年以前人员或调整更多

有范又有料
2026-01-14 09:22:09
漳州夫妇省吃俭用40万炒股一年不看,再去营业厅打明细后当场哭了

漳州夫妇省吃俭用40万炒股一年不看,再去营业厅打明细后当场哭了

崖边行
2025-12-31 22:51:22
化身叹息之墙!U23亚洲杯小组赛扑救榜:李昊16次大幅领先

化身叹息之墙!U23亚洲杯小组赛扑救榜:李昊16次大幅领先

懂球帝
2026-01-15 00:27:09
南韩第一腿模!黑丝!杀伤力太大了!

南韩第一腿模!黑丝!杀伤力太大了!

碧波万览
2026-01-15 00:24:31
卡尼万万没想到,启程访华前夕,赖清德突然捣乱,一句话坏他好事

卡尼万万没想到,启程访华前夕,赖清德突然捣乱,一句话坏他好事

风干迷茫人
2026-01-15 06:07:48
U23亚洲杯小组赛解围榜:彭啸37次断档领先,贺一然排名第六

U23亚洲杯小组赛解围榜:彭啸37次断档领先,贺一然排名第六

懂球帝
2026-01-15 00:14:22
惊天大反转!伊朗断网围猎美以间谍,马斯克紧急启动星链送上助攻

惊天大反转!伊朗断网围猎美以间谍,马斯克紧急启动星链送上助攻

兴史兴谈
2026-01-15 06:22:59
演员成毅车辆被人喷红漆,工作室发声明:艺人及家人持续遭受跟踪与骚扰,已向公安机关要求采取必要措施

演员成毅车辆被人喷红漆,工作室发声明:艺人及家人持续遭受跟踪与骚扰,已向公安机关要求采取必要措施

鲁中晨报
2026-01-14 20:47:03
特大新闻!中国4艘舰艇抵达美国家门口!俄:只有中国能让美沉默

特大新闻!中国4艘舰艇抵达美国家门口!俄:只有中国能让美沉默

爱吃醋的猫咪
2026-01-12 21:58:17
网红牙膏,被立案

网红牙膏,被立案

中国新闻周刊
2026-01-13 07:34:04
特朗普急着大炼稀土,却发现一个致命真相:中国同时垄断两样东西

特朗普急着大炼稀土,却发现一个致命真相:中国同时垄断两样东西

菠萝欣赏家本尊
2026-01-14 16:16:48
你们知道香港这边的消费有多离谱吗?

你们知道香港这边的消费有多离谱吗?

流苏晚晴
2026-01-10 16:30:12
2026-01-15 07:00:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1708文章数 72关注度
往期回顾 全部

科技要闻

携程因涉嫌垄断被市场监管总局调查

头条要闻

外媒揭美对伊朗动手方案:派特种部队对高层实施"斩首"

头条要闻

外媒揭美对伊朗动手方案:派特种部队对高层实施"斩首"

体育要闻

你是个好球员,我们就拿你交易吧

娱乐要闻

网红彭十六偷税被封杀 曾成功转型明星

财经要闻

携程被立案调查,最高或被罚超50亿

汽车要闻

曝Model Y或降到20万以内!

态度原创

家居
亲子
本地
房产
公开课

家居要闻

心之所向 现代建构之美

亲子要闻

家长要告诉孩子一生遇到都是有用的人

本地新闻

邵阳公益诉讼检察主题曲:《守望星》

房产要闻

热销17亿后!天正·三亚湾壹号,被爆违建!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版