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

python中函数式编程

文章目录

    • map()函数
    • filter()函数
      • reduce()函数

map()函数

当使用map()函数时,可以使用lambda表达式来定义一个简单的转换函数。

以下是一个使用map()函数和lambda表达式的简单示例:

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

在上面的示例中,我们使用lambda表达式定义了一个匿名函数lambda x: x**2,它接受一个参数x并返回其平方。然后,我们创建了一个数字列表numbers,并使用map()函数将lambda表达式应用于该列表中的每个元素,得到一个包含每个元素平方的迭代器对象。最后,我们使用list()函数将迭代器对象转换为列表,并打印出结果。

注意,lambda表达式可以是任意的函数定义,可以根据需要定义多个参数和多个操作。以上示例只是一个简单的平方操作,但你可以根据具体需求来定义更复杂的转换函数。
在这里插入图片描述

filter()函数

当正确使用 filter()函数时,我们可以按照指定的条件来筛选出可迭代对象中符合条件的元素。以下是一个简单的例子,使用filter()函数从列表中筛选出所有大于5的数字:

numbers = [1, 6, 3, 8, 9, 2, 4, 7, 5]filtered_numbers = filter(lambda x: x > 5, numbers)print(list(filtered_numbers))  # 输出结果:[6, 8, 9, 7]

在上述示例中,我们创建了一个数字列表 numbers,然后使用 filter() 函数和一个 lambda 表达式,筛选出列表中所有大于 5 的数字。最后,我们使用 list() 函数将筛选结果转换为列表,并打印出结果。输出结果为 [6, 8, 9, 7]

reduce()函数

reduce() 函数是 Python 内置的函数,用于对序列中的元素进行累积处理。它接收一个二元函数和一个可迭代对象作为参数,然后依次将可迭代对象中的元素传递给二元函数进行累积计算,最终返回计算结果。

下面是一个简单的例子,使用 reduce() 函数计算一个列表中所有元素的累积乘积:

from functools import reducenumbers = [1, 2, 3, 4, 5]product = reduce(lambda x, y: x * y, numbers)print(product)  # 输出结果:120

在上述示例中,我们导入了 reduce() 函数,并创建了一个数字列表 numbers。然后,使用 reduce() 函数和一个 lambda 表达式,依次将列表中的元素进行累积乘积计算。最终,我们将计算结果打印出来,输出结果为 120。因为 1 * 2 * 3 * 4 * 5 的结果为 120。

下面是一个简单的例子,使用 reduce() 函数计算一个列表中所有元素的累计和:

from functools import reducenumbers = [1, 2, 3, 4, 5]sum = reduce(lambda x, y: x + y, numbers)print(sum)  # 输出结果:15

在上述示例中,我们导入了 reduce() 函数,并创建了一个数字列表 numbers。然后,使用 reduce() 函数和一个 lambda 表达式,依次将列表中的元素进行累计求和计算。最终,我们将计算结果打印出来,输出结果为 15。因为 1 + 2 + 3 + 4 + 5 的结果为 15。

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

相关文章:

  • Java_JDK8到JDK21各版本发行时间及重要特性
  • 03 数仓平台 Kafka
  • 2023年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——解析版
  • Matlab论文插图绘制模板第129期—函数网格曲面图
  • 无限移动的风景 css3 动画 鼠标移入暂停
  • Java基本数据类型、包装类及拆装箱详解
  • SIT2596,可替代LM2596,40V 输入 150KHz 3A 降压型电源转换器
  • python + mongodb使用入门
  • 焊接专业个人简历(通用25篇)
  • c++学习第四讲---函数提高
  • 如何使用cpolar+Plex在Windows系统上搭建私人媒体影音站点公网可访问
  • FreeRTOS-软件定时器
  • Lab 3: Recursion, Tree Recursion(CS61A 2020)
  • GVIM 配置 for begin/end class/endclass 等配对
  • 2024不收费的数据恢复软件EasyRecovery16
  • 【每日一题】找出叠涂元素
  • Qt面试题
  • LeetCode:1038. 从二叉搜索树到更大和树(反向中序遍历 C++、Java)
  • 【文末送书】Python OpenCV从入门到精通
  • RabbitMQ 的七种消息传递形式
  • 开源免费跨平台数据同步工具-Syncthing
  • java语言中受检异常和非受检异常的区别是什么?
  • vue3 element-plus el-table表头冻结,表头吸顶
  • mysql中删除数据后,新增数据时id会跳跃,主键自增id不连续
  • todesk连接ubuntu显示当前系统并无桌面环境,或无显示器,无法显示远程桌面,您需要自行安装X11桌面环境,或者使用终端文件功能
  • webpack学习-1.起步
  • GNU Radio 教程
  • Linux 下命令行启动与关闭WebLogic的相关服务
  • 模型量化相关知识汇总
  • yum 操作,出现Cannot retrieve metalink for repository: epel/x86_64