python专题高阶函数
一 前言
本篇内容是关于一些高阶函数基本使用的知识,其目的主要是简化代码,更加精炼;
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
二 高阶函数
2.1 高阶函数概念
函数式编程为高阶函数(Higher-order function);函数式编程是指将一个函数作为另一个函数参数的编程方式;一般情况下使用函数式编程通常都会使用到匿名函数简化代码;
2.2 高阶函数示例
如下所示,定义过滤函数filter,如果函数值大于5就返回入参,否则返回None;
将 filter 函数 作为 getNumber 函数的第一个入参,在函数体调用filter函数对第二个入参arrs进行值的过滤操作;
最后对filter(num)进行判定,如果是None不入新的列表,否则加入列表;
# -*- coding: utf-8 -*-
# 对数组 arr 进行过滤
def getNumber(filter,arrs):
return [ filter(num) for num in arrs if filter(num) is not None]
# 定义过滤函数
def filter(num):
if num > 5:
return num
else:
pass
result = getNumber(filter,list(range(0,10,2)))
print(result)
输出
[6, 8]
三 内置函数
常用的内置高阶函数如下;
3.1 map()
map函数接受两个参数,一个是函数,一个是序列;map将传入的函数依次作用于序列中的每个元素,将结果作为新的列表返回;
如下示例,传入匿名函数,其作用是对列表list中的每个值进行乘2,对新的值组成列表并返回;
anno_map = map(lambda x: x * 2, list(range(0,10,2)))
print(list(anno_map))
输出
[0, 4, 8, 12, 16]
3.2 reduce()
reduce():函数接收两个参数,一个是函数,另一个是序列;函数必须接收两个参数,reduce将序列的前一个参数和后一个参数进行累计计算的结果返回;
如下示例 将 0,2,4,6,8 进行累加的结果进行返回;
from functools import reduce
anno_reduce = reduce(lambda x, y: x + y, range(0,10,2))
# 20
print(anno_reduce)
3.3 filter()
filter():筛选过滤函数;将传入的函数,依次作用于每个元素,如果函数返回值是True就保留否则丢弃;
如下所示,对[0,10)的数字进行判定,如果能被2整除就保留,否则丢弃;
anno_filter = filter(lambda x: x % 2 == 0,list(range(10)) )
print(list(anno_filter))
输出
[0, 2, 4, 6, 8]
3.4 sorted()
sorted() 是排序函数 , 其参数如下
iterable
是一个序列key
可计算的排序函数,用于自定义排序;reverse
排序规则,reverse = False 升序(默认),reverse = True降序;
如下示例,key的函数进对列表中的每个元素进行作用,对运算后的结果进行大小比较,默认是升序;
anno_sorted = sorted([2,1,5,3,7], key=lambda x: x * x)
print(anno_sorted)
输出
[1, 2, 3, 5, 7]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix