高阶函数(Higher-Order Function)

news2024/9/25 11:20:28

Python 中的高阶函数(Higher-Order Function)是一个至少满足下列一个条件的函数:

接受一个或多个函数作为输入。
输出一个函数。
高阶函数在 Python 中非常强大和灵活,它们允许你将函数作为参数传递给其他函数,或者从函数中返回函数。这种特性使得代码更加模块化和可重用。下面是一些常见的高阶函数例子:

1. map()
map() 函数接受一个函数和一个可迭代对象(如列表或元组)作为输入,将传入的函数依次作用到序列的每个元素上,并返回一个新的迭代器。

python
def square(x):  
    return x * x  
  
numbers = [1, 2, 3, 4, 5]  
squared = list(map(square, numbers))  
print(squared)  # 输出: [1, 4, 9, 16, 25]
2. filter()
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新迭代器。

python
def is_even(n):  
    return n % 2 == 0  
  
numbers = [1, 2, 3, 4, 5, 6]  
even_numbers = list(filter(is_even, numbers))  
print(even_numbers)  # 输出: [2, 4, 6]
3. reduce()
reduce() 函数会对参数序列中元素进行累积。函数将一个两元操作函数作用在序列[x1, x2, x3, ...]上,并将其结果并为一个单一返回值,例如用于求和或求积。注意,reduce() 在 Python 3 中被移出了内建函数,但可以通过 functools 模块来访问。

python
from functools import reduce  
  
def add(x, y):  
    return x + y  
  
numbers = [1, 2, 3, 4, 5]  
sum_of_numbers = reduce(add, numbers)  
print(sum_of_numbers)  # 输出: 15
4. lambda 表达式
虽然 lambda 表达式本身不是一个高阶函数,但它经常与高阶函数一起使用,提供简洁的函数定义。lambda 函数是一个可以接收任何数量的参数但只能有一个表达式的函数。

python
numbers = [1, 2, 3, 4, 5]  
squared = list(map(lambda x: x**2, numbers))  
print(squared)  # 输出: [1, 4, 9, 16, 25]

自定义高阶函数


def applyTwice(func, value):  
    """接受一个函数和一个值,返回该函数两次作用于该值的结果"""  
    return func(func(value))  
  
def addTen(x):  
    """将 10 加到 x 上"""  
    return x + 10  
  
print(applyTwice(addTen, 5))

仿制map函数


#仿写map函数
def WxpMap(f,lista):
    "f为变化函数,lista为列表"
    listE=[]    
    for i in range(len(lista)):
        listE.append(f(lista[i]))
    return listE

listD=[1,2,3,4,5,6]
listE=WxpMap(lambda x:x**2,listD)
print(listE)

仿制reduce函数(用什么来存储结果呢?)


#仿写reduce函数
def WxpReduce(f,lista):
    "f为变化函数,lista为列表"
    #加法的时候,设置result=0;乘法的时候设置result=1;(其他运算怎么办?)
    result=0
    for i in lista:
        result=f(result,i)
    return result

listD=[1,2,3,4,5,6]
#求平方和
result=WxpReduce(lambda x,y:x+y**2,listD)
print(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postman/Jmeter接口测试

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是接口测试 通常做的接口测试指的是系统对外的接口,比如你需要从别的系统来获取到或者同步资源与信息,他们会提供给你一个写好…

独立站烧钱背后:Facebook 广告转化率策略的神秘“致胜法则”

Facebook广告作为大部分零售独立站的主要“烧钱”渠道,投放策略的决策往往比日常操作技巧更为重要。 之前出海笔记分享过关于在我们烧了一年广告预算后,对人群定位的总结 这次在另外一个项目上再次印证了我们的推断。 省流:直接告诉你们结论…

全国糖酒会全域采购商选品会前瞻-见证零售新势力的崛起与变革

消费市场正经历着前所未有的变革。新兴零售渠道如雨后春笋般迅速崛起,对传统大卖场和电商模式提出了严峻挑战。在这一变革浪潮中,仓储会员店、零食折扣店、即时零售、内容电商以及私域团购等新兴模式脱颖而出,零售商与供应商关系被重构&#…

2024最新Linux发行版,Kali Linux迎来劲敌,零基础入门到精通,收藏这一篇就够了

概念简介 Parrot OS 是一款基于 Debian 的 Linux 发行版,专门为安全研究、渗透测试、开发以及隐私保护而设计。由 Frozenbox 团队开发的 Parrot OS,结合了现代安全工具、用户友好的环境以及出色的隐私保护特性,成为网络安全从业者、开发人员…

EasyExcel 多个不同对象集合,导入同一个sheet中

需求&#xff1a;将两块数据&#xff0c;写入要一个excel里面。 根据项目&#xff0c;导入依赖版本 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> <…

旷视 ShuffleNetV2

目录 前言 一、ShuffleNetV2带来的创新点四条轻量化网络设计原则 1.1 准则一&#xff1a;相同的输入输出通道数能够减少内存访问成本(MAC) 1.2 准则二: 过多的分组卷积会增加 MAC 1.3 准则三: 网络的碎片化程度会减少并行化程度&#xff08;碎片化操作对并行加速不友好&am…

用计算器学习float、输入输出函数的格式化

上一篇介绍了C语言的一部分基础知识&#xff0c;今天我们来继续深入一点讲。 引入浮点数——float 做一个加减法计算器显然不能满足其他计算需求&#xff0c;比如我们生活中的东西并不总是用整数来衡量。我们有五毛钱&#xff0c;有半杯水&#xff0c;有随时都在变的速度&…

大模型面试百问百答

大家好&#xff0c;这里是 大模型八哥。今天分享大模型面试相关知识点&#xff0c;持续更新。 1. RAG技术体系的总体思路 数据预处理->分块&#xff08;这一步骤很关键&#xff0c;有时候也决定了模型的效果&#xff09;->文本向量化->query向量化->向量检索->重…

钰泰-ETA6964A 锂电池充电器IC

描述. ETA6964A 是一款高度集成的 3A 开关模式电池充电管理和系统电源路径管理器件&#xff0c;适用于单节锂离子和锂聚合物电池。它具有快速充电功能&#xff0c;支持高输入电压&#xff0c;适用于各种智能手机、平板电脑和便携式设备。其低阻抗电源路径优化了开关模式的运行…

第六次人口普查,人口前100姓氏

第六次人口普查中&#xff0c;人口前100的姓氏具体排名和分布情况如下&#xff1a; 人口前10的姓氏 李&#xff1a;约占全国汉族人口的7.94%&#xff0c;是人口最多的姓氏。 王&#xff1a;约占汉族人口的7.41%&#xff0c;仅次于李姓。 张&#xff1a;约占全国汉族人口总数的7…

视频汇聚/视频存储/安防视频监控EasyCVR平台RTMP推流显示离线是什么原因?

视频汇聚/视频存储/安防视频监控EasyCVR视频汇聚平台兼容性强、支持灵活拓展&#xff0c;平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 EasyCVR安防监控视频综合管理平台采用先进的网络传输技术&#xff0…

Goland的使用

一、安装Goland 一、Goland简介 Goland是由JetBrains公司旨在为go开发者提供的一个符合人体工程学的新的商业IDE。这个IDE整合了IntelliJ平台的有关go语言的编码辅助功能和工具集成特点 二、下载相应的安装包 1、官网下载地址 GoLand by JetBrains: More than just a Go IDE 三…

网络编程,端口号,网络字节序,udp

前面一篇我们讲了网络的基础&#xff0c;网络协议栈是什么样的&#xff0c;数据如何流动传输的&#xff1b;接下来这篇&#xff0c;我们将进行实践操作&#xff0c;真正的让数据跨网络进行传输&#xff1b; 1.网络编程储备知识 1.1 初步认识网络编程 首先我们需要知道我们的…

Facebook对现代社交互动的影响

自2004年成立以来&#xff0c;Facebook已经成为全球最大的社交媒体平台之一&#xff0c;改变了人们的交流方式和社交互动模式。作为一个数字平台&#xff0c;Facebook不仅为用户提供了分享生活点滴的空间&#xff0c;也深刻影响了现代社交互动的各个方面。本文将探讨Facebook如…

Ollama在Windows安装,使用,简单调用API

一、安装ollama 1、安装 在Windows本地安装ollama&#xff0c;官方网页&#xff1a;https://ollama.com/download/windows 下载完安装包&#xff0c;安装就好&#xff0c;默认应该是C盘。应该是没办法改&#xff0c;如果有小伙伴能改&#xff0c;也请告知一下。 2、验证安装…

华为OD机试 - 数据单元的变量替换 - 分治、递归(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

基于yolov8+deepsort+gradio实现目标追踪演示

【效果展示】 【测试环境】 ultralytics8.2.95 gradio4.26.0 torch1.9.0cu111 理论上支持最新ultralytics版本 【实现部分代码】 with gr.Blocks() as demo:with gr.Tab("追踪"):# 使用Markdown显示文本信息&#xff0c;介绍界面的功能gr.Markdown(""…

linux固定串口别名

最近项目功能要求&#xff0c;需要将插入设备的串口设备占用的端口号固定住&#xff0c;这里记录一下设置过程方便以后查阅。 linux固定串口别名 配置过程相关补充 配置过程 列出当前插入USB端口的设备&#xff1a; lsusb查看当前设备的端口号&#xff1a; ls dev/查看当前设…

无人机飞手培训及巡检、吊运等飞行服务一体化技术详解

在无人机行业日益兴起的背景下&#xff0c;培养专业、合格的无人机飞手成为首要任务。飞手培训基础涵盖理论学习与安全意识建立两大方面。理论学习包括无人机基础知识&#xff08;如无人机类型、结构、原理&#xff09;、航空法规&#xff08;如民用无人驾驶航空器实名制登记管…

旧衣回收小程序搭建,开发功能优势

随着人们生活水平、消费水平的提高&#xff0c;在日常生活中产生了大量的限制物品&#xff0c;为了减少浪费&#xff0c;越来越多的人开始重视环保回收。旧衣物作为一种新型的回收方式&#xff0c;也逐渐得到了大众的关注&#xff0c;旧衣物回收市场发展规模也在持续上升&#…