热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python进阶:深入理解高阶函数的应用与实践

本文深入探讨了Python中高阶函数的应用与实践,重点分析了`map`函数的使用方法及其在不同版本Python中的差异。`map`函数能够将序列中的每个元素传递给指定的函数,并返回一个新的可迭代对象(在Python3中为`map`对象,在Python2中为列表)。通过具体示例,详细讲解了如何利用`map`函数进行高效的函数式编程,以及如何在实际开发中优化代码结构和性能。

高阶函数

map(fun,seq)

将seq中的元素依次作为参数传入fun,返回由函数返回值组成的新的列表。
python3:返回一个map对象
python2:返回列表
可以用list将对象转换为列表进行调用

代码:

        def fun(a):
            return a+1
        print(map(fun,[1,2,3,4,5]))
        print(list(map(fun,[1,2,3,4,5])))

输出结果:

Python基础【高阶函数】


filter(fun,seq)

函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
python3:返回一个filter对象
python2:返回列表

代码:

        def fun(a):
                return True if a%2==1 else False
        print(filter(fun,[1,2,3,4,5]))
        print(list(filter(fun,[1,2,3,4,5])))

输出结果:

Python基础【高阶函数】


reduce(fun,seq)

reduce传入一个函数一个序列
fun的参数必须是2个
首次将seq中前两个元素传入fun中,随后每次将返回值和下一个元素作为新的参数传入函数,直到传入序列中最后一个元素为止,返回一个最后的返回值。
reduce()是python2中的内置函数
python3中需要导入funtools包。
from funtools import reduce

代码:

        import functools
        from functools import reduce
        def fun(a,b):
                return a+b
        print(reduce(fun,[1,2,3,4,5]))

输出结果:

Python基础【高阶函数】


sorted(seq,key=...,reverse=...)

函数对所有可迭代的对象进行排序操作。
返回一个由seq序列组成的新的序列
利用key可对需要排序的元素进行筛选

代码:

        print(sorted([3,1,2,5,4],reverse=True)) ## 逆序
        print(sorted([3,1,2,5,4],key=lambda x:x*-1)) ## 取参数的相反数进行排序

输出结果:

Python基础【高阶函数】


推荐阅读
  • 开发技巧分享:利用套索与矩形选择工具高效选取绘图中的全部字形节点
    开发技巧分享:利用套索与矩形选择工具高效选取绘图中的全部字形节点 ... [详细]
  • Python初学者入门指南:从基础到实践的全面学习路径本文为Python初学者提供了一条从基础到实践的全面学习路径。特别介绍了Python字典(Dictionary)中的`items()`方法,该方法用于返回字典中所有键值对的视图对象,便于在循环和其他操作中使用。通过实例讲解,帮助读者更好地理解和应用这一重要功能。 ... [详细]
  • 1packageFileOperation;23importjava.io.File;4importjava.io.FileFilter;5importjava.util.Arra ... [详细]
  • 本文深入分析了Django框架中模型应用与非模型应用的区别与应用场景,详细对比了两者在数据处理、性能表现及开发灵活性等方面的特点。同时,文章还介绍了如何在视图函数中有效利用这些特性,结合PostgreSQL、MySQL、SQLite3和Oracle等不同数据库的配置与使用方法,为开发者提供了全面的参考指南。 ... [详细]
  • 在上篇文章的基础上,本文将继续探讨 Linux 设备驱动中的设备模型与 `devicedriverbus` 机制。在将设备注册到总线之前,需要先创建 `device` 对象。可以通过静态定义 `device` 结构体变量,并调用 `device_register` 函数来完成这一过程。此外,文章还将详细解析设备模型的内部工作机制,以及 `devicedriverbus` 机制如何实现设备与驱动的自动匹配和管理。 ... [详细]
  • 微软发布紧急安全更新,所有Windows 10版本均面临影响!
    微软于周五紧急发布了两项安全更新,旨在解决Windows 10所有版本中Windows Codecs库和Visual Studio Code应用存在的安全隐患。此次更新是继本周初发布的月度例行安全补丁之外的额外措施,凸显了这些问题的紧迫性和重要性。这些漏洞可能被攻击者利用,导致系统权限提升或远程代码执行等严重后果。建议用户尽快安装更新,以确保系统的安全性。 ... [详细]
  • 使用 Vue 集成 iScroll 实现移动端表格横向滚动与固定列功能 ... [详细]
  • 本文将深入探讨Python的Tulip网络库(即3.4版本后更名为asyncio)的实现机制。通过详细解析Tulip的工作原理,旨在帮助读者理解其如何高效处理I/O阻塞问题,并展示其实现非阻塞流程的具体方法。 ... [详细]
  • 本文通过复旦大学自然语言处理课程中的一个具体案例,详细解析了中文词汇分割技术的实现方法。该案例利用Java编程语言,结合词典和算法模型,展示了如何高效地进行中文文本的词汇分割,为相关研究和应用提供了宝贵的参考。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • 多进程程序异常退出问题分析与解决 ... [详细]
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • 本文深入探讨了Android事件分发机制的源代码,重点分析了DecorView作为Activity根布局的角色及其在事件传递中的作用。同时,详细解析了PhoneWindow在Activity窗口管理中的关键功能,以及它如何与DecorView协同工作,确保用户交互事件的高效处理。 ... [详细]
  • 在处理MySQL递归查询父子节点时,若遇到“此函数未声明为DETERMINISTIC、NOSQL或READS SQL DATA”的错误,可以通过以下方法解决:首先,确保表结构正确设计,包含必要的字段用于存储节点关系。接着,创建两个函数,一个用于根据输入ID查询所有子节点及其ID,另一个用于根据输入ID查询所有父节点及其ID。在创建函数时,需明确声明函数的特性,如是否确定性、是否访问SQL数据等,以避免上述错误。调用这些函数时,确保传递正确的参数,并检查返回结果的完整性。 ... [详细]
  • 利用IDEA高效构建Maven Spring MVC项目环境
    本文详细介绍了如何使用IntelliJ IDEA高效搭建Maven Spring MVC项目环境。首先,通过创建一个新的Maven项目,设置好GroupId、ArtifactId和Version等基本信息。接着,配置项目的依赖和插件,确保Spring MVC框架能够顺利集成。最后,通过IDEA的内置工具完成项目的初始化和测试,为后续开发打下坚实基础。 ... [详细]
author-avatar
手机用户2502873691
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有