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

python中的高阶函数介绍

在Python中,高阶函数是指那些可以接受函数作为参数或者返回函数作为结果的函数。这种特性使得函数式编程成为可能,并且可以编写出更加简洁和灵活的代码。以下是Python中一些常用的高阶函数:

  1. map() map() 函数接受一个函数和一个可迭代对象作为参数,并将该函数应用于可迭代对象的每个元素,返回一个新的可迭代对象,其中包含了应用函数后的结果。

     

    python复制

    def square(x): return x * x numbers = [1, 2, 3, 4] squared_numbers = map(square, numbers) print(list(squared_numbers)) # 输出: [1, 4, 9, 16]
  2. filter() filter() 函数接受一个函数和一个可迭代对象作为参数,该函数应该返回一个布尔值。filter() 会根据函数的返回值过滤可迭代对象的元素,返回一个新的可迭代对象,其中包含了所有使得函数返回 True 的元素。

     

    python复制

    def is_even(x): return x % 2 == 0 numbers = [1, 2, 3, 4, 5, 6] even_numbers = filter(is_even, numbers) print(list(even_numbers)) # 输出: [2, 4, 6]
  3. reduce() reduce() 函数通常用于对一个序列做累积计算。它接受一个函数和一个可迭代对象作为参数,函数应该接受两个参数。reduce() 会将函数应用于序列的第一个和第二个元素,然后将结果与第三个元素一起应用函数,以此类推,直到处理完所有元素。reduce() 返回一个单一的结果。

     

    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. sorted() sorted() 函数可以接受一个函数作为 key 参数,该函数用于计算排序的依据。sorted() 会根据这个函数的结果对可迭代对象进行排序,并返回一个新的排序后的列表。

     

    python复制

    students = [ {"name": "Alice", "age": 20}, {"name": "Bob", "age": 19}, {"name": "Charlie", "age": 21} ] # 按年龄排序 sorted_students = sorted(students, key=lambda student: student["age"]) print(sorted_students) # 输出: [{'name': 'Bob', 'age': 19}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 21}]
  5. apply() apply() 函数在Python 2中可用,但在Python 3中已被移除。它用于调用函数,并可以传递参数列表或字典。在Python 3中,通常直接调用函数并传递参数。

  6. partial() functools.partial() 函数用于部分应用一个函数,即固定函数的某些参数,返回一个新的函数。

     

    python复制

    from functools import partial def power(base, exponent): return base ** exponent square = partial(power, exponent=2) print(square(3)) # 输出: 9

这些高阶函数在Python中非常有用,它们可以简化代码,提高代码的可读性和可维护性。通过使用高阶函数,可以将复杂的逻辑分解成更小的、可重用的部分,从而使代码更加模块化。

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

相关文章:

  • 华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)
  • [开发|java] LocalDate转化为LocalDateTime
  • 介绍几种 MySQL 官方高可用方案
  • IMU坐标系与自定义坐标系转化
  • 《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()
  • 手动将jar包导入本地Maven仓库
  • 煤安防爆手机为什么能在煤矿井下使用
  • 科普小课堂|不同版本USB接口详细解析
  • Spring Boot中的JSON解析优化
  • 全彩屏负氧离子监测站
  • LeetCode 1207.独一无二的数
  • 自然语言处理——英文文本预处理
  • 2024年二级建造师机电工程专业历年考试题库精选答案解析。
  • Oracle 19C19.3 rac安装并RU升级到19.14
  • 1012:Joseph
  • 【高级篇】备份与恢复:守护数据的长城(十一)
  • Docker构建多平台镜像
  • 群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)
  • 创纪录!沃飞长空完成新一轮融资,实力获资方认可
  • 1991java Web体检预约管理系统eclipse定制开发mysql数据库BS模式java编程jdbc
  • 如何优雅终止线程/线程池
  • 泰迪智能科技实验室产品-云计算资源管理平台介绍
  • .Net WebApi启动 Swagger异常报错: Failed to load API definition
  • CSS新手入门笔记【导入方法、选择器介绍、选择器优先级、属性详细介绍、盒子模型】
  • 制作高校专属PPT时,如何将校徽设置成透明底色?无须PS
  • 设计模式之【适配器模式】
  • AI论文降重:一键操作,让你的论文查重率瞬间下降
  • Cmake--学习笔记
  • LangChain让LLM带上记忆
  • Word恢复历史文档,记好4个方法就足够