【Python】高阶函数介绍
其实函数可以作为变量,之前学过C++,对于这种用法并不奇怪。无非就是函数充当变量,可以传入函数而已。
下面分别介绍 Python
中常见的高阶函数:map/reduce
, filter
, sorted
map###
map()
函数接收两个函数,一个是函数,一个是序列(可迭代均可), map
将传入的函数依次作用到序列的每个元素,并把结果作为新的list
返回
举个例子:将 list 中所有的数字转化为字符串:
>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce###
reduce()
把一个函数作用在一个序列[x1, x2, x3.....] 上,这个必须接收两个函数,reduce
将结果和序列的下一元素做累积计算
例子1:将序列 [1, 3, 5, 7, 9] 变换成整数 13579。
>>>reduce(lambda x, y : x * 10 + y, [1, 3, 5, 7, 9])
13579
filter###
filter()
函数用于过滤序列。filter()
接收一个函数和 一个序列 。与 map() 不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是 True
或 False
决定保留还是丢弃该元素。
例子: 将一个序列中的空字符删掉。
>>>filter(lambda s : s and s.strip(), ['A', '', 'B', None, 'C', ' '])
['A', 'B', 'C']
sorted###
>>>sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
传入自定义函数可以实现自定义排序。
例子1:排序应该忽略大小写,按照字母序排序。
def cmp_ignore_case(s1, s2):
u1 = s1.upper()
u2 = s2.upper()
if u1 < u2:
return -1
if u1 > u2:
return 1
return 0
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], lambda s1, s2 : s1.upper() -s2.upper())
['about', 'bob', 'Credit', 'Zoo']
另外数字反序有个很好的方法:
sorted([36, 5, 12, 9, 21][::-1]
点滴积累,点滴生活,丰富研究生生活!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现