首页 > 其他分享 >高阶函数

高阶函数

时间:2022-10-05 23:44:19浏览次数:34  
标签:函数 list1 result func print 高阶

  把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。

1、 体验高阶函数

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

print(abs(-10))  # 10

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

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

体验

# 需求:任意两个数字,先进行数字处理(绝对值或四舍五入)再求和计算
# 1.方法一
def add_num(a, b):
    # 绝对值
    return abs(a) + abs(b)

result = add_num(-1.3, 1.9)
print(result)  # 3.2

# 2. 方法二:高阶函数:f是第三个参数,用来接受将来传入的函数
def sum_num(a, b, f):
    return f(a) + f(b)

result1 = sum_num(-1, 5, abs)
print(result1)  # 6

result2 = sum_num(1.2, 1.6, round)
print(result2)  # 3

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

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

2、内置高阶函数

  2.1 map()

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

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

# 1.准备列表数据
list1 = [1, 2, 3, 4, 5]
# 2.准备2次方计算的函数
def func(x):
    return x ** 2

# 3.调用map
result = map(func, list1)
# 4.验收结果
print(result)
print(list(result))  # 转换数据类型

  2.2 reduce()

  reduce(func(x,y), lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。

  注意:reduce()传入的参数func必须接受2个参数。

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

list2 = [1, 2, 3, 4, 5]

# 1. 导入模块
import functools

# 2. 定义功能函数
def func1(a,b):
    return a + b

# 3. 调用reduce。作用:功能函数计算的结果和序列的下一个数据做累计计算
result = functools.reduce(func1, list2)
print(result)  # 15

  2.3 filter()

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

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 1. 定义功能函数:过滤序列中的偶数
def func(x):
    return x % 2 == 0

# 2. 调用filter
result = filter(func, list1)
print(result)
print(list(result))

 

标签:函数,list1,result,func,print,高阶
From: https://www.cnblogs.com/yz-b/p/16756792.html

相关文章

  • C++虚函数
    C++三大特性:封装、继承、多态在这里谈下多态,多态指的是在类之间存在继承关系时,有的函数声明为virtual函数,当我们将子类指针或引用转化为父类指针或引用时,调用某个虚函数时......
  • 【机器学习中的矩阵求导】(八)标量函数f(x)的雅克比矩阵(迹函数)
    学习总结交换律:,需要满足、同维度行列式微分:文章目录​​学习总结​​​​一、标量函数的雅克比函数​​​​二、关于迹函数的性质​​​​2.1常用性质​​​​2.2迹函数的......
  • 【C语言_15】自定义函数和math库函数详解篇!
    一.函数的概念1.什么是函数?函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。函数可以提前保存起来,并给它起一个独一无二的名......
  • 在C语言下Socket函数使用
    Socket介绍Socket中文意思是“插座”,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文......
  • 【优化调度】基于粒子群算法求解单一水库优化调度(目的函数总发电量)附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 数组和函数
     数组1.概念:相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。(具有相同数据类型)2.定义:基本格式:数据类型数组名[数组大小]3.数组......
  • 【CV知识点汇总与解析】|损失函数篇
    【CV知识点汇总与解析】|损失函数篇【写在前面】本系列文章适合Python已经入门、有一定的编程基础的学生或人士,以及人工智能、算法、机器学习求职的学生或人士。系列文章包......
  • python 函数的说明文档
    可以给函数加上说明文档,辅助理解函数作用语法如下:deffun(x,y):"""函数说明,功能是什么:paramx:形参x的说明:paramy:形参y的说明:......
  • 4、函数
    函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量,也可以将一个函数作为参数进行传递,还能在函数调用中返回函数类型变量。函数类型有两类:-内部(i......
  • (函数)用递归实现求阶乘函数fact(n)的功能,即求1*2*……*n,运行后输出结果如下
    样例输入5 样例输出12 样例输入6 样例输出720 参考答案deffact(n):result=1foriinrange(1,n+1):result*=ireturnresultn=i......