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

Python----高阶函数

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

高阶函数的由来

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

① 正数的绝对值是它本身 ② 负数的绝对值是它的相反数

abs()返回的结果都是正数

abs(-10) # 10

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

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

需求:任意两个数字,按照指定要求(① 绝对值 ② 四舍五入)整理数字后再进行求和计算。


def fn1(num1, num2):return abs(num1) + abs(num2)print(fn1(-10, 10))

def fn2(num1, num2):
    return round(num1) + round(num2)

print(fn2(10.2, 6.9))


要求:我们能不能对以上进行简化,然后合并为同一个函数 => 设计思想(高阶函数)


def fn(num1, num2, f):# f代表要传入的参数(参数是一个函数名,如abs或round)return f(num1) + f(num2)# 绝对值求和
print(fn(-10, 10, abs))
# 四舍五入
print(fn(10.2, 6.9, round))

map()函数

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

lst = [1, 2, 3]

func函数:求某个数的平方,如输入2返回4,输入3返回9

map(func, lst)返回结果[1, 4, 9]


# 定义一个函数
def func(n):
    return n ** 2
# 定义一个列表
list1 = [1, 2, 3]
# 使用map对lst进行func函数操作
list2 = list(map(func, list1))
print(list2)


reduce()函数

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

list1 = [1, 2, 3]

def func(a, b):

return a + b

reduce(func,lst)则把列表中的每个元素放入func中进行加工,然后进行累加操作


import functools


# 定义一个函数
def func(a, b):
    return a + b
# 定义一个列表
list1 = [10, 20, 30, 40, 50]
sums = functools.reduce(func, list1)
print(sums)


filter()函数

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


# 定义一个函数(获取所有的偶数)
def func(n):
   return n % 2 == 0
# 定义一个序列
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 调用filter函数进行过滤操作
result = filter(func, list1)
print(list(result))


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

相关文章:

  • Unity地面交互效果——6、地形动态顶点置换和曲面细分
  • Linux系统服务之一次性服务(2)
  • Vue项目解决van-calendar 显示白色空白,需滑动一下屏幕,才可正常显示
  • Linux:可视化管理工具Webmin的安装
  • WARNING: Access control is not enabled for the database.
  • JavaScript编程进阶 – Return语句
  • Python与设计模式--备忘录模式
  • 04_Flutter自定义Slider滑块
  • 服务器数据恢复—EMC存储raid5故障导致上层应用崩溃的数据恢复案例
  • 7.1 Windows驱动开发:内核监控进程与线程回调
  • 基于ssm的汽车论坛管理系统设计与实现
  • 实习开发日志经验总结(一)
  • 【Unity基础】8.简单场景的搭建
  • 傅里叶变换及其在机器学习中的应用
  • xorm源码学习
  • Vue3中的<script setup>和<script>的区别
  • Docker笔记-Docker搭建最新版zabbix服务端(2023-07-31)
  • QT配合CSS隐藏按钮
  • 2023亚太地区数学建模C题思路分析+模型+代码+论文
  • Linguistic Steganalysis in Few-Shot Scenario论文阅读笔记
  • 详细学习Pyqt5的4种项目部件(Item Widget)
  • notepad++ 插件JSONView安装
  • AKConv:具有任意采样形状和任意数目参数的卷积核
  • 如何使用C++开发集群服务
  • docker安装以及idea访问docker
  • 激光切割头组件中喷嘴的作用是什么
  • 腾讯云双11活动最后一天,错过再等一年!
  • Java实现飞翔的鸟小游戏
  • Python网络请求初级篇:使用Requests库抓取和解析数据
  • 详解API开发【电商平台API封装商品详情SKU数据接口开发】