[ python ] 匿名函数和高阶函数
匿名函数
描述:
关键字 lambda 定义的函数
语法:
函数名 = lambda 参数:返回值
返回值:
函数返回结果值
实例:
一个参数的匿名函数:
1 2 3 4 5 6 7 | func = lambda x: x * x f = func( 2 ) print (f) # 执行结果: # 4 |
多个参数的匿名函数:
1 2 3 4 5 6 7 | func = lambda x, y: x + y f = func( 1 , 2 ) print (f) # 执行结果: # 3 |
高阶函数
(1)map
描述:
map()会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数的返回值的新列表
语法:
map(function, iterable, ...)
参数:
function -- 函数
iterable -- 一个或多个序列
返回值:
python 2.X 返回列表
python 3.X 返回迭代器
实例:
提供两个列表,对相同位置的列表数据进行相加
(2)reduce
描述:
对参数序列中的元素进行累积,效果如下:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
语法:
reduce(function, iterable[, initializer])
参数:
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
返回值:
返回函数计算结果
实例:
结合匿名函数+高阶函数的使用:
1 2 3 4 5 6 7 | from functools import reduce r = reduce ( lambda x, y: x + y, [ 1 , 2 , 3 , 4 , 5 ]) print (r) # 执行结果: # 15 |
(3)filter
描述:
python内建的 filter() 函数用于过滤序列
语法:
filter()接收一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素
实例:
去掉list中的偶数,只保留奇数
1 2 3 4 5 6 7 8 9 10 | l = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] def is_odd(n): return n % 2 = = 1 f = filter (is_odd, l) print ( list (f)) # 执行结果: # [1, 3, 5, 7, 9] |
练习:
回数是指从左到右读和从右到左读都是一样的数,例如:12321,909 请利用 filter() 筛选出回数
1 2 3 4 | def is_palindrome(n): hx = str (n) # 首先将参数转换为str类型 if hx = = hx[:: - 1 ]: # 如果从左到右,从右到左都相等,则返回回数 return hx |
(4)sorted
描述:
sorted() 函数对所有可迭代的对象进行排序操作。
sort 和 sorted 区别:
sort 是应用在 list 上的方法,sorted可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回是对已经存在的列表进行操作,无返回值,而内建函数sorted 方法返回的是一个新的list,而不是在原来的基础上进行的操作
语法:
sorted(iterable[, cmp[, key[, reverse]]])
key: 主要用来进行比较的元素,只有一个参数,具体的函数的参数就是取自与可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse:默认排序规则是升序排序, reverse=True 则降序排序
返回值:
返回重新排序的列表
实例:
比较数字
1 2 | In [ 1 ]: sorted ([ 36 , 5 , - 12 , 9 , - 21 ]) Out[ 1 ]: [ - 21 , - 12 , 5 , 9 , 36 ] |
定义key函数,使用绝对值进行排序
1 2 | In [ 2 ]: sorted ([ 36 , 5 , - 12 , 9 , - 21 ], key = abs ) Out[ 2 ]: [ 5 , 9 , - 12 , - 21 , 36 ] |
定义key函数,使用绝对值进行降序排序
1 2 | In [ 3 ]: sorted ([ 36 , 5 , - 12 , 9 , - 21 ], key = abs , reverse = True ) Out[ 3 ]: [ 36 , - 21 , - 12 , 9 , 5 ] |
(5)zip
描述:
zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
语法:
zip([iterable, ...])
iterable: 一个或多个迭代器
返回值:
返回元组列表
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | In [ 10 ]: a = [ 1 , 2 , 3 ] In [ 11 ]: b = [ 4 , 5 , 6 ] In [ 12 ]: list ( zip (a, b )) Out[ 12 ]: [( 1 , 4 ), ( 2 , 5 ), ( 3 , 6 )] #以最短的列表作为组合的结尾 In [ 13 ]: a = [ 1 , 2 , 3 , 4 , 5 ] In [ 14 ]: b = [ 1 , 2 ] In [ 15 ]: list ( zip (a, b )) Out[ 15 ]: [( 1 , 1 ), ( 2 , 2 )] |
本文作者:hukey
本文链接:https://www.cnblogs.com/hukey/p/9754016.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战