0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python高阶函数详解

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-02 16:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

python高阶函数

1. map 函数

map 函数,它接收两个参数,第一个参数是一个函数对象(当然也可以是一个lambda表达式),第二个参数是一个序列。

它可以实现怎样的功能呢,我举个例子你就明白了。

>>> map(lambda x: x*2, [1,2,3,4,5])
[2, 4, 6, 8, 10]

可以很清楚地看到,它可以将后面序列中的每一个元素做为参数传入lambda中。

当我们不使用 map 函数时,你也许会这样子写。

mylist=[]
for i in [1,2,3,4,5]:
    mylist.append(i*2)

2. filter 函数

filter 函数,和 map 函数相似。同样也是接收两个参数,一个lambda 表达式,一个序列。它会遍历后面序列中每一个元素,并将其做为参数传入lambda表达式中,当表达式返回 True,则元素会被保留下来,当表达式返回 False ,则元素会被丢弃。

下面这个例子,将过滤出一个列表中小于0的元素。

>>>filter(lambda x: x < 0, range(-5, 5))
[-5, -4, -3, -2, -1]

3. reduce 函数

reduce 函数,也是类似的。它的作用是先对序列中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 lambda 函数运算,将其得到的结果再与第四个元素进行运算,以此类推下去直到后面没有元素了。

https://file.elecfans.com//web2/M00/33/8C/poYBAGIfLxCAarbfAAB0y7gjBWk239.png

这边举个例子你也就明白了。

>>>reduce(lambda x,y: x+y, [1,2,3,4,5])
15

它的运算过程分解一下是这样的。

1+2=3
3+3=6
6+4=10
10+5=15

4. 注意点

以上几个函数,熟练的掌握它们的写法,可以让我们的代码看起来更加的 Pythonic ,在某一程度上代码看起来更加的简洁。

如果你是新手呢,你需要注意的是,以上示例是在 Python2.x 环境下演示的。而在 Python3.x 中,却有所不同,你可以自己尝试一下。

这里总结一下:

第一点,map 和 filter 函数返回的都不再是一个列表,而是一个迭代器对象。这里以map为例

>>> map_obj = map(lambda x: x*2, [1,2,3,4,5])
>>> from collections.abc import Iterator
>>> isinstance(map_obj, Iterator)
True
>>> next(map_obj)
2
>>> list(map_obj)
[4, 6, 8, 10]

第二点,reduce 不可以直接调用,而是要先导入才能使用

from functools import reduce

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4422

    浏览量

    67851
  • python
    +关注

    关注

    58

    文章

    4885

    浏览量

    90309
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用PYTHON进行的跨平台仿真

    如何使用编程语言Python来调用和控制VirtualLab Fusion中的模拟。请查看下面链接的文档,以找到关于如何设置和使用Python和VirtualLab Fusion之间的接口的详细指南,以及一个
    发表于 04-02 08:21

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    摘要 VirtualLab Fusion允许Python外部访问其建模技术、求解器和结果。这个用例介绍了一种使用路径变量和Visual Studio代码将Python连接到VirtualLab
    发表于 03-31 09:39

    2026 I 李增 SI/PI/EMC 高阶研修班最新直播课火热开启!

    SI/PI/EMC高阶研修班AI驱动SI/PI设计优化—李增2026最新课程开班招募—行业资深专家李增·亲授高阶实战,解锁职场新高度各位深耕SI/PI/EMC领域的行业朋友,重磅喜讯!2026年李增
    的头像 发表于 03-04 16:48 550次阅读
    2026 I 李增 SI/PI/EMC <b class='flag-5'>高阶</b>研修班最新直播课火热开启!

    1688 商品详情 API 调用与数据解析 Python 实战

    你想要的是 1688 商品详情 API 的 Python 调用与数据解析实战方案,核心是完成 API 凭证配置、接口请求(含签名)、响应数据解析、异常处理 的全流程落地,我会提供可直接运行的代码,并
    的头像 发表于 02-10 11:23 393次阅读

    函数信号发生器和任意波形信号发生器区别详解

    函数发生器提供了一个预置列表,里面列出了它可以生成的波形或码型。 在函数发生器中,用户可以更改频率、幅度和偏移等波形参数,还可添加简单的失真。 任意波形发生器更为复杂,能够仿真真实世界中的信号
    的头像 发表于 02-09 16:24 385次阅读
    <b class='flag-5'>函数</b>信号发生器和任意波形信号发生器区别<b class='flag-5'>详解</b>

    迈向智驾高阶验证:康谋高保真HIL仿真解决方案,重塑测试价值

    随着智能驾驶向L3/L4高阶演进,传感器配置密度激增、场景复杂度指数级提升,HIL(硬件在环)测试面临核心痛点,如传统方案仿真保真度不足难以匹配高阶智驾感知需求、链路复杂导致升级成本高、边缘场景覆盖不全与低延迟传输矛盾凸显、无法支撑高阶
    的头像 发表于 01-23 17:33 3506次阅读
    迈向智驾<b class='flag-5'>高阶</b>验证:康谋高保真HIL仿真解决方案,重塑测试价值

    指针与函数详解

    1、指针函数指针函数,从名字上看它本质上是一个函数。指针函数:返回值类型是指针的函数函数声明如
    发表于 01-23 06:02

    没有专利的opencv-python 版本

    所有 官方发布的 opencv-python 核心版本(无 contrib 扩展)都无专利风险——专利问题仅存在于 opencv-contrib-python 扩展模块中的少数算法(如早期 SIFT
    发表于 12-13 12:37

    淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战

    本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
    的头像 发表于 09-26 09:13 1112次阅读
    淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 <b class='flag-5'>Python</b> 代码实战

    termux如何搭建python游戏

    termux如何搭建python游戏 Termux搭建Python游戏开发环境的完整指南 一、Termux基础环境准备 Termux是一款无需root即可在安卓设备上运行的Linux终端
    发表于 08-29 07:06

    Python中字符串逆序有几种方式,代码是什么

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆序输出的几种常用
    的头像 发表于 08-28 14:44 1278次阅读

    python app不能运行怎么解决?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    发表于 08-06 06:27

    详解hal_entry入口函数

    当使用RTOS时,程序从main函数开始进行线程调度;当没有使用RTOS时,C语言程序的入口函数main函数调用了hal_entry函数。由于我们新建的工程是没有选用RTOS的,因此,
    的头像 发表于 07-25 15:34 2229次阅读

    ZR电机高阶性能轻松驾驭3C电子行业各应用场景

    国奥科技ZR电机以高阶性能驾驭中阶需求,轻松适配3C电子制造行业多种装配与检测场景
    的头像 发表于 06-20 18:08 1020次阅读
    ZR电机<b class='flag-5'>高阶</b>性能轻松驾驭3C电子行业各应用场景

    【HarmonyOS 5】鸿蒙中的UIAbility详解(三)

    【HarmonyOS 5】鸿蒙中的UIAbility详解(三) ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 本文是鸿蒙中的UIAbility
    的头像 发表于 06-14 22:32 884次阅读