【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.mzph.cn/news/840328.shtml

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

相关文章

三生随记——关于工地的恐怖故事

夜色中&#xff0c;月光斑驳地洒落在那片荒凉的工地。高耸的钢筋骨架如同巨大的怪兽&#xff0c;在黑暗中矗立着&#xff0c;散发着令人不安的气息。这里曾是城市的繁华之地&#xff0c;但如今却成了一片废墟&#xff0c;充满了无尽的恐怖和神秘。 工地四周被铁丝网围了起来&am…

Flutter 中的 GlowingOverscrollIndicator 小部件:全面指南

Flutter 中的 GlowingOverscrollIndicator 小部件&#xff1a;全面指南 Flutter 的 GlowingOverscrollIndicator 是一个视觉效果引人注目的组件&#xff0c;用于在列表或网格滚动超出其内容大小时提供视觉反馈。这种组件通常以发光效果指示用户已经滚动到了末端或超出了内容区…

算法题1:电路开关(HW)

题目描述 实验室对一个设备进行通断测试,实验员可以操控开关进行通断,有两种情况: ps,图没记下来,凭印象画了类似的 初始时,3个开关的状态均为断开;现给定实验员操控记录的数组 records ,records[i] = [time, switchId],表示在时刻 time 更改了开关 switchId 的状态…

【大模型】 基于AI和全球化进程的权衡:开源大模型与闭源大模型

【大模型】 基于AI和全球化进程的权衡&#xff1a;开源大模型与闭源大模型 前言 实际上关于开源or闭源&#xff0c;一直以来都是颇有争议的话题&#xff0c;人们争执于数据的隐私性和共享性&#xff0c;到底哪一方能获得的收益更大。而对于开源与闭源哪个更好实际上也就是说是…

Nginx的satisfy指令_ 用途,使用场景及注意事项

什么是satisfy指令&#xff1f; Nginx的satisfy指令用于控制当请求符合多个访问控制条件时&#xff0c;如何对这些条件进行组合判断。具体来说&#xff0c;它决定了是在多个访问控制条件中&#xff0c;只要任意一个条件满足即可还是全部条件都必须满足。 用途与使用场景 sat…

深度学习500问——Chapter09:图像分割(5)

文章目录 9.12 DenseNet 9.13 图像分割的数据集 9.13.1 PASCAL VOC 9.13.2 MS COCO 9.13.3 Cityscapes 9.14 全景分割 9.12 DenseNet 这篇论文是CVPR2017年的最佳论文。 卷积神经网络结构的设计主要朝着两个方向发展&#xff0c;一个是更宽的网络&#xff08;代表&#xff1a…

【算法例题】n元钱买n只鸡

题目描述&#xff1a;公鸡5元1只&#xff0c;母鸡3元1只&#xff0c;小鸡1元3只&#xff0c;问&#xff1a;n元钱买n只鸡&#xff0c;怎么买&#xff1f; 解题思路&#xff1a;这题要用枚举算法&#xff0c;枚举鸡的数量&#xff0c;代码如下&#xff1a; ​#include <bit…

【揭开深度学习之核:反向传播算法简析】

文章目录 前言反向传播算法的基础工作原理伪代码示例关键点结论 前言 在深度学习的世界里&#xff0c;反向传播算法是一张藏在神秘面纱后的地图&#xff0c;它指引着神经网络通过复杂的数据迷宫&#xff0c;找到最优解的路径。本文将简要介绍反向传播算法的原理&#xff0c;探…

初步学习pygame,使用pygame搭建简单的窗口效果

在VSCode上使用pygame 第一步&#xff1a;创建 Python 虚拟环境 打开 VSCode 中的 Terminal&#xff08;在菜单栏中选择 View > Terminal&#xff09;使用 cd 命令切换到你的项目文件夹输入以下命令来创建一个新的虚拟环境&#xff1a; python3 -m venv env这将在你的项目…

【Element-plus】vue组合式中使用el-upload通过oss接口上传图片流程(可直接复制使用)

Html <el-upload:actionossUrl:on-success"handleImgSuccess":headers"{Authorization:token}"><el-icon><Plus /></el-icon>点击上传图片</el-upload> JS const ossUrl ref("") ossUrl.value 【你的ossUrl】…

每天五分钟深度学习框架PyTorch:创建具有特殊值的tensor张量

本文重点 tensor张量是一个多维数组,本节课程我们将学习一些pytorch中已经封装好的方法,使用这些方法我们可以快速创建出具有特殊意义的tensor张量。 创建一个值为空的张量 import torch import numpy as np a=torch.empty(1) print(a) print(a.dim()) print(s.shape) 如图…

三菱机械手维修控制器故障

在工业自动化领域&#xff0c;三菱工业机器人凭借其高性能、高可靠性和易用性&#xff0c;受到了广泛应用。然而&#xff0c;随着时间的推移&#xff0c;可能会出现MITSUBISH工业机械臂控制器故障&#xff0c;需要进行三菱机械手维修。 一、MITSUBISH机械手控制器故障诊断 在进…

【MySQL精通之路】MySQL的使用(1)-调用MySQL程序

目录 1.命令解释器 2.选项 3.非选项 4.环境变量 要从命令行&#xff08;也就是说&#xff0c;从shell或命令提示符&#xff09;调用MySQL程序 请输入程序名称&#xff0c;然后输入任何选项或其他参数&#xff0c;以指示程序要执行的操作。 以下命令显示了一些示例程序调用…

冷干机的日常维护

冷干机的日常维护保养。 观察记录 (一)每班观察记录仪表值4次 1、压缩空气进出口压差不超过0.035Mpa; 2、蒸发压力表0.4Mpa-0.5Mpa; 高压压力表1.2Mpa-1.6Mpa。&#xff08;冷媒R22&#xff09; 3、压缩机的运行电流、电压。 (二)经常观察冷却水系统、压缩空气系统的进口温度…

【Numpy】深入解析numpy.mgrid()函数

numpy.mgrid()&#xff1a;多维网格生成与数值计算的利器 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393…

Android Audio基础——AudioTrack构造过程(九)

通过前面的学习我们知道 AudioTrack 是 Android 中用于播放音频的类,它提供了一种方式来直接控制音频数据的播放。通过 AudioTrack 类,你可以创建一个用于播放音频的音频流,并将音频数据写入该流中进行播放。 在创建 AudioTrack 对象时,你可以指定音频流的参数,如采样率、…

Qt下使用QImage和OpenCV实现图像的拼接与融合

文章目录 前言一、使用QImage进行水平拼接二、使用OpenCV进行水平拼接三、使用OpenCV进行图像融合四、示例完整代码总结 前言 本文主要讲述了在Qt下使用QImage和OpenCV实现图像的拼接与融合&#xff0c;并结合相应的示例进行讲解&#xff0c;以便大家学习&#xff0c;如有错误…

首发!飞凌嵌入式FETMX6ULL-S核心板已适配OpenHarmony 4.1

近日&#xff0c;飞凌嵌入式在FETMX6ULL-S核心板上率先适配了OpenHarmony 4.1&#xff0c;这也是业内的首个应用案例&#xff0c;嵌入式核心板与OpenHarmony操作系统的结合与应用&#xff0c;将进一步推动千行百业的数智化进程。 飞凌嵌入式FETMX6ULL-S核心板基于NXP i.MX 6ULL…

码蹄集部分题目(2024OJ赛16期;单调栈集训+差分集训)

&#x1f9c0;&#x1f9c0;&#x1f9c0;单调栈集训 &#x1f96a;单调栈 单调递增栈伪代码&#xff1a; stack<int> st; for(遍历数组) {while(栈不为空&&栈顶元素大于当前元素)//单调递减栈就是把后方判断条件变为小于等于即可{栈顶元素出栈;//同时进行其他…

【Linux】LAMP集群分布式安全方案

LAMP集群分布式安全方案主要涉及确保Linux、Apache、MySQL和PHP&#xff08;LAMP&#xff09;组合构成的集群环境的安全性和稳定性。 本次实验通过网络层安全对防火墙配置&#xff1a;使用防火墙&#xff08;如iptables或firewalld&#xff09;来限制对集群的访问&#xff0c;只…