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

Python 函数式编程进阶:map、filter、reduce

Python 函数式编程进阶:map、filter、reduce

    • 介绍
      • map 函数
        • 作用和语法
        • 使用 map 函数
        • Lambda 函数的配合应用
      • filter 函数
        • 作用和语法
        • 使用 filter 函数
        • Lambda 函数的结合运用
      • reduce 函数
        • 作用和语法
        • 使用 reduce 函数
        • 典型应用场景


介绍

在函数式编程中,map、filter、reduce 是三种基本的高阶函数,它们在处理数据集合时起着至关重要的作用。这些函数有助于执行列表(或数组)的转换和操作,而不需要改变原始数据集合。它们通常用于简化算法,使得代码更加简洁、易于理解和维护。

map 函数

作用和语法

map 函数遍历集合中的每个元素,并应用一个给定的函数,然后返回一个包含结果的新集合。
在 Python 中,map 函数的基本语法如下:

map(function, iterable, ...)
  • function: 要应用到每个元素上的函数。
  • iterable: 一个或多个可迭代的对象。
使用 map 函数
# 定义一个函数,将元素乘以 2
def multiply_by_two(x):return x * 2
# 使用 map 应用这个函数到列表 [1, 2, 3]
result = map(multiply_by_two, [1, 2, 3])
# 将结果转换为列表
print(list(result))  # 输出: [2, 4, 6]

在这里插入图片描述

Lambda 函数的配合应用
# 使用 lambda 函数简化 map 调用
result = map(lambda x: x * 2, [1, 2, 3])
print(list(result))  # 输出: [2, 4, 6]

在这里插入图片描述

filter 函数

作用和语法

filter 函数遍历集合中的每个元素,应用一个测试函数,仅保留那些测试结果为 True 的元素。
Python 中的 filter 函数语法如下:

filter(function, iterable, ...)
  • function: 测试每个元素的测试函数。
  • iterable: 一个或多个可迭代的对象。
使用 filter 函数
# 定义一个函数,检查元素是否为偶数
def is_even(x):return x % 2 == 0
# 使用 filter 应用这个函数到列表 [1, 2, 3, 4, 5]
result = filter(is_even, [1, 2, 3, 4, 5])
# 将结果转换为列表
print(list(result))  # 输出: [2, 4]

在这里插入图片描述

Lambda 函数的结合运用
# 使用 lambda 函数简化 filter 调用
result = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5])
print(list(result))  # 输出: [2, 4]

在这里插入图片描述

reduce 函数

作用和语法

reduce 函数将一个二元函数累积地应用到一个序列的所有元素上,从左到右,直到序列结束。
Python 中的 reduce 函数语法如下:

reduce(function, iterable[, initial], ...)
  • function: 一个二元操作函数,有两个参数,对序列中的连续两个元素进行操作。
  • iterable: 一个可迭代的对象。
  • initial: 可选参数,作为第一次调用函数时的第一个参数。
使用 reduce 函数
from functools import reduce
# 定义一个函数,计算列表中所有数字的乘积
def multiply(x, y):return x * y
# 使用 reduce 计算 [1, 2, 3, 4] 的乘积
result = reduce(multiply, [1, 2, 3, 4])
print(result)  # 输出: 24

在这里插入图片描述

典型应用场景
from functools import reduce
# 计算 Fibonacci 数列的前 n 项和
def fib_sum(n):return reduce(lambda x, _: x + fib(n-1), range(n), 0)
# 辅助函数,计算 Fibonacci 数列的第 n 项
def fib(n):return 1 if n <= 1 else fib(n-1) + fib(n-2)
# 调用函数
print(fib_sum(10))  # 输出: 550

在这段代码中,fib_sum 函数使用 reduce 来计算斐波那契数列前 10 项的和。reduce 函数以一个累加操作的 lambda 函数和一个 range 的列表作为初始参数,然后对 range 列表中的每个数字应用 lambda 函数,将其结果与之前的累加结果相加。

在这里插入图片描述

相关文章:

Python 函数式编程进阶:map、filter、reduce

Python 函数式编程进阶&#xff1a;map、filter、reduce 介绍map 函数作用和语法使用 map 函数Lambda 函数的配合应用 filter 函数作用和语法使用 filter 函数Lambda 函数的结合运用 reduce 函数作用和语法使用 reduce 函数典型应用场景 介绍 在函数式编程中&#xff0c;map、…...

大模型|基础_word2vec

文章目录 Word2Vec词袋模型CBOW Continuous Bag-of-WordsContinuous Skip-Gram存在的问题解决方案 其他技巧 Word2Vec 将词转化为向量后&#xff0c;会发现king和queen的差别与man和woman的差别是类似的&#xff0c;而在几何空间上&#xff0c;这样的差别将会以平行的关系进行表…...

14.2 url后端过滤器(❤❤)

14.2 过滤器 1. 过滤器Filter1.1 配置形式实现过滤器1.2 过滤器生命周期1.3 过滤器特性(面试点)1.4 注解形式实现过滤器1.5 两种实现的选择2. 应用2.1 字符集过滤:统一设置请求与响应字节编码1. 配置方式实现过滤器参数化:init-param标签关键代码完整代码2. 注解方式实现2.2 多…...

Leetcode 377 组合总和 Ⅳ

题意理解&#xff1a; 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 这道题目和凑零钱是一样的&#xff0c;需要求使用指定元素&#xff08;纸币…...

CleanMyMacX4.14.6如何清理mac垃圾内存

一直以来&#xff0c;苹果电脑的运行流畅度都很好&#xff0c;但是垃圾内存多了磁盘空间慢慢变少&#xff0c;还是会造成卡顿的。这篇文章就告诉大家电脑如何清理垃圾内存&#xff0c;电脑如何清理磁盘空间。 一、电脑如何清理垃圾内存 垃圾内存指的是各种缓存文件和系统垃圾…...

Java 学习和实践笔记(1)

2024年&#xff0c;决定好好学习计算机语言Java. B站上选了这个课程&#xff1a;【整整300集】浙大大佬160小时讲完的Java教程&#xff08;学习路线Java笔记&#xff09;零基础&#xff0c;就从今天开始学吧。 在这些语言中&#xff0c;C语言是最基础的语言&#xff0c;绝大多…...

【自然语言处理-工具篇】spaCy<1>--介绍及安装指南

目录 前言 安装指南 pip conda spaCy升级 总结 前言 spaCy是一个开源的自然语言处理库,用于处理和分析文本数据。它提供了许多功能,包括分词、词性标注...

LeetCode树总结

​​​​​​144. 二叉树的前序遍历 递归写法很简单&#xff0c;不再赘述。迭代写法需要用到一个栈&#xff0c;因为是根->左子树->右子树的顺序进行遍历&#xff0c;所以弹出当前结点后要先入栈右儿子&#xff0c;再入栈左儿子。 /*** Definition for a binary tree n…...

AI专题:冬渐去、春将来,待看,AI 开花,数据挂果,可控链潮起

今天分享的是AI 系列深度研究报告&#xff1a;《AI专题&#xff1a;冬渐去、春将来&#xff0c;待看&#xff0c;AI 开花&#xff0c;数据挂果&#xff0c;可控链潮起》。 &#xff08;报告出品方&#xff1a;AVIC&#xff09; 报告共计&#xff1a;36页 行业概览:2023年呈稳…...

Netty源码系列 之 EventLoop run()方法 源码

EventLoop[实现类为NioEventLoop&#xff0c;我们研究NioEventLoop即可] EventLoop是一个单线程的线程池 核心作用&#xff1a;处理执行IO操作&#xff08;accept&#xff0c;read&#xff0c;write事件&#xff09;&#xff0c;普通任务&#xff0c;定时任务 EventLoop封装…...

ChatGPT 4.0 升级指南, ChatGPT Plus(GPT 4.0) 有何优势?

1.ChatGPT 是什么&#xff1f; ChatGPT 是由 OpenAI 开发的一种基于人工智能的聊天机器人&#xff0c;它基于强大的语言处理模型 GPT&#xff08;Generative Pre-trained Transformer&#xff09;构建。它能够理解人类语言&#xff0c;可以为我们解决实际的问题。 ChatGPT 4.…...

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...

【机器学习】机器学习简单入门

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;matplotlib &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…...

考研数据结构笔记(1)

数据结构&#xff08;1&#xff09; 数据结构在学什么&#xff1f;数据结构的基本概念基本概念三要素逻辑结构集合线性结构树形结构图结构 物理结构&#xff08;存储结构&#xff09;顺序存储链式存储索引存储散列存储重点 数据的运算 算法的基本概念什么是算法算法的五个特性有…...

【深度学习理论】持续更新

文章目录 1.统计学习理论 1.统计学习理论 统计学习理论&#xff0c;一款适合零成本搞深度学习的大冤种的方向 从人类学习到机器学习的对比&#xff08;学习的过程分为归纳和演绎 &#xff09;&#xff0c;引出泛化和过拟合的概念。 如何表示归纳的函数规律呢&#xff1f;以监督…...

npm ERR! reason: certificate has expired(淘宝镜像过期)

npm ERR! request to https://registry.npm.taobao.org/yauzl/-/yauzl-2.4.1.tgz failed, reason: certificate has expired 今天在执行npm install命令时&#xff0c;报错百度了下是淘宝证书过期原因 解决方法一 执行下面两个命令再进行npm install即可 npm cache clean --…...

“极简壁纸“爬虫JS逆向·实战

文章目录 声明目标分析确定目标目标检索 代码补全完整代码 爬虫逻辑完整代码 运行结果 声明 本教程只用于交流学习&#xff0c;不可用于商业用途&#xff0c;不可对目标网站进行破坏性请求&#xff0c;请遵守相关法律法规。 目标分析 确定目标 获取图片下载链接 目标检索…...

Django通过Json配置文件分配多个定时任务

def load_config():with open("rule.json", rb)as f:config json.load(f)return configdef job(task_name, config, time_interval):# ... 通过task_name判断进行操作if task_name get_data_times:passdef main():config load_config()for task_name, task_value…...

C++ 搜索二叉树的删除

首先查找元素是否在二叉搜索树中&#xff0c;如果不存在&#xff0c;则返回 要删除的结点可能分下面四种情况&#xff1a; a. 要删除的结点无孩子结点 b. 要删除的结点只有左孩子结点 c. 要删除的结点只有右孩子结点 d. 要删除的结点有左、右孩子结点 看起来有待删除节点有4中…...

构建中国人自己的私人GPT—支持中文

上一篇已经讲解了如何构建自己的私人GPT&#xff0c;这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型&#xff0c;GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品&#xff0c;llama.cpp 不再…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...