当前位置: 首页 > news >正文

【Python】—— 高阶函数

目录

(一)体验高阶函数

(二)内置高阶函数

2.1 map()

2.2 reduce()

2.3 filter()


Python中的高阶函数是指那些接受函数作为参数,或者返回函数作为结果的函数。这种特性让Python的函数编程能力非常强大,使得代码更加灵活和可重用。

(一)体验高阶函数

在Python中,abs()函数可以完成对数字求绝对值计算。

abs(-10) #10

round()函数可以完成对数字的四舍五入计算。

round(1.2)    #1round(1.9)    #2

需求:任意两个数字,按照指定要求整理数字后再进行求和计算。

  • 方法1
def add_num(a,b):return abs(a) + abs(b)result = add_num(-1,2)
print(result)    #3
  • 方法2
def sum_num(a,b,f):return f(a) + f(b)result = sum_num(-1,2,abs)
print(result)    #3

注意:两种方法对比之后,发现,方法2的代码会更加简洁,函数灵活性更高。

  • 函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

(二)内置高阶函数

2.1 map()

描述

在Python中,map 是一个内置的高阶函数,它接收一个函数作为第一个参数(通常称为“映射函数”),然后接收一个或多个可迭代对象(如列表、元组、集合等)作为后续参数。

语法

map(function, iterable, ...)
  • 将传入的函数变量func作用到iterable变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。

 需求:计算list1序列中各个数字的2次方。

list1 = [1,2,3,4,5]
def func(x):return x ** 2result = map(func,list1)print(result)           #<map object at 0x000002AFA5106AD0>
print(list(result))     #[1,4,9,16,25]

【解释说明】

首先,定义了一个列表 list1 和一个函数 func

  • list1 = [1,2,3,4,5]:这是一个包含五个整数的列表。
  • def func(x): return x ** 2:这是一个函数,它接受一个参数 x 并返回 x 的平方。

接下来,使用 map() 函数和 func 函数来处理 list1 中的每一个元素。

  • result = map(func, list1)map() 函数会遍历 list1 中的每一个元素,并将它们作为参数传递给 func 函数。然后,它会收集 func 函数的返回值并创建一个迭代器,该迭代器包含所有这些返回值。在这个例子中,map() 函数的返回值(即 result)是一个迭代器,它包含 1 的平方、2 的平方、3 的平方、4 的平方和 5 的平方。

然后,尝试打印 result

  • print(result):因为 result 是一个迭代器,所以直接打印它会显示迭代器的内存地址(如 <map object at 0x000002AFA5106AD0>),而不是迭代器中的实际值。

最后,使用 list() 函数将 result 迭代器转换为列表,并打印结果:

  • print(list(result)):这里,list() 函数会迭代 result 迭代器并收集所有的值到一个新的列表中。因此,输出是 [1, 4, 9, 16, 25],这是 list1 中每个元素的平方。

需要注意的是,一旦您使用 list(result) 将迭代器转换为列表,result 迭代器就被“消耗”了。这意味着如果再次尝试将 result 转换为列表(或进行其他迭代操作),您将不会得到任何值,因为迭代器已经到达了其末尾。


2.2 reduce()

描述

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

语法

reduce(func,lst)
  • 其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
  • 注意:reduce(0传入的参数func必须接收2个参数。

 需求:计算list1序列中各个数字的累加和。

import functoolslist1 = [1,2,3,4,5]def func(a,b):return a + bresult = functools.reduce(func,list1)
print(result)

2.3 filter()

描述

filter函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换为列表,可以使用list()来转换。

语法

filter(function, iterable)
  • function -- 判断函数。
  • iterable -- 可迭代对象。

 示例

list1=[1,2,3,4,5,6,7,8,9,10]
def func(x):return x%2 == 0result = filter(func,list1)
print(result)           #<filter object at 0x0000013D68516B00>
print(list(result))     #[2,4,6,8,10]

http://www.lryc.cn/news/352333.html

相关文章:

  • 逻辑分析仪 - 采样率/采样深度
  • 【Maven打包将resources/lib/下的jar也打包进jar包中】
  • 基于Java的地震震中附近城市分析实战
  • 【C语言】指针(三)
  • 【Linux】从零开始认识进程间通信 —— 管道
  • Top3专业课150满分,怎么考的?
  • Windows Presentation Foundation(WPF)要点总结
  • 【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法
  • 揭秘Python的魔法:装饰器的超能力大揭秘 ‍♂️✨
  • 怎么一键消除路人?教你三个消除方法
  • Android Settings系统属性读写
  • 2024年,企业的人才管理怎么做?这5点是关键!
  • 数据库DDL语句
  • 《艺术大观》知网艺术刊:可加急, 出刊上网快
  • 如何在go语言中调用c语言代码
  • Monodle centerNet3D 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署
  • Android Studio 使用MQTT协议开发应用时怎样关闭MQTT连接
  • Sping源码(八)—registerBeanPostProcessors
  • MaxEnt模型文章中存在的问题和处理方法(050B更新)2024.5.24
  • Modular RPG Hero PBR
  • 机器学习之常用算法与数据处理
  • Git管理
  • osgearth 3.5 vs 2019编译
  • 2024最新 Jenkins + Docker 实战教程(六)- Jenkins配置邮箱接收构建通知
  • Python学习---基于TCP协议的网络通信程序案例
  • 正确可用--Notepad++批量转换文件编码为UTF8
  • 每天五分钟深度学习框架PyTorch:创建具有特殊值的tensor张量
  • 2024电工杯数学建模B题Python代码+结果表数据教学
  • LabVIEW和ZigBee无线温湿度监测
  • FastCopy