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

一学就废|Python基础碎片,reduce函数

         reduce(fun,seq)函数用于将在其参数中传递的特定函数应用于传递的序列中提到的所有列表元素。使用该函数,需要引入functools模块。

        让我们从一个简单的例子开始,将一个列表中的所有数字相加。

from functools import reduce# Function to add two numbers
def add(x, y):return x + ya = [1, 2, 3, 4, 5]
res = reduce(add, a)print(res)  输出结果 15

        reduce()函数将 add() 函数累积应用于列表中的每个数字。首先,1+2=3,然后3+3=6,依此类推,直到处理完所有数字,最终结果为 15。

reduce函数语法

functools.reduce(function, iterable[, initializer])

function:接受两个参数并对其执行操作的函数。

iterable:其元素由函数处理的可迭代对象。

initializer(可选):操作的起始值。如果提供,它被放在可迭代对象中的第一个元素之前。

配合lambda函数使用

        当与 lambda 函数配合使用时,reduce()成为一个简洁而强大的工具,用于聚合任务,如求和、乘法或查找最大值。

from functools import reduce# Summing numbers with reduce and lambda
a = [1, 2, 3, 4, 5]
res = reduce(lambda x, y: x + y, a)print(res)15

        lambda 函数接受两个参数(x 和 y)并返回它们的总和。reduce()首先将函数应用于前两个元素: 1+2=3。然后将结果3与下一个元素相加:3+3=6,依此类推。该过程一直持续到所有元素都被加和,产生 15。

reduce()与运算符函数一起使用

        reduce()也可以与运算符函数结合使用,以实现与 lambda 函数类似的功能,并使代码更具可读性。

import functools
import operator# initializing list
a = [1, 3, 5, 6, 2]# using reduce with add to compute sum of list
print(functools.reduce(operator.add, a))# using reduce with mul to compute product
print(functools.reduce(operator.mul, a))# using reduce with add to concatenate string
print(functools.reduce(operator.add, ["nice", "to", "meet"]))17
180
nicetomeet

operator. add 和 operator.mul 函数是预定义的运算符。reduce()将函数累积应用于列表中的所有元素。操作与 lambda 示例类似,但代码更清晰易读。

reduce() 与 accumulate() 区别

        itertools 模块中的accumulate() 函数也执行累积操作,但它返回一个包含中间结果的迭代器,这与返回单个最终值的reduce()不同。

from itertools import accumulate
from operator import add# Cumulative sum with accumulate
a = [1, 2, 3, 4, 5]
res = accumulate(a, add)print(list(res))[1, 3, 6, 10, 15]

accumulate() 可看作是reduce()在相同运算下的中间过程列表结果集,reduce()返回最后的计算结果。


http://www.mrgr.cn/news/80500.html

相关文章:

  • Spring Security 6 系列之二 - 基于数据库的用户认证和认证原理
  • WPF 关于界面UI菜单权限(或者任意控件的显示权限)的简单管理--只是简单简单简单简单
  • canvas(填充描边,绘制矩形、路径、文本、图像,变换,阴影,渐变等)
  • 【含开题报告+文档+PPT+源码】基于SpringBoot的开放实验管理平台设计与实现
  • 家校通小程序实战教程10部门管理前后端连接
  • PyTorch如何通过 torch.unbind 和torch.stack动态调整张量的维度顺序
  • Python毕业设计选题:基于django+vue的宠物服务管理系统
  • 思考:VSCode 的宏观工作原理 快速入门 VSCodium (****)
  • 数字电视标准与分类
  • Kafka部署
  • 解决PyTorch模型推理时显存占用问题的策略与优化
  • 【BUG记录】Apifox 参数传入 + 号变成空格的 BUG
  • C-数据的存储
  • android opencv导入进行编译
  • Vue3期末复习
  • MySQL中Json字段
  • MySQL数据库sql教程-从入门到进阶
  • 【Linux】结构化命令:if-then语句
  • 基于python绘制数据表(下)
  • 一、基于langchain使用Qwen搭建金融RAG问答机器人--技术准备
  • samout llm解码 幻觉更低更稳定
  • Rk3588 FFmpeg 拉流 RTSP, 硬解码转RGB
  • Android显示系统(13)- 向SurfaceFlinger提交Buffer
  • 从上千份大厂面经呕心沥血整理:大厂高频手撕面试题(数据结构篇 ,Java实现亲试可跑)
  • FFmpeg第一话:FFmpeg 简介与环境搭建
  • YOLOv8目标检测(三*)_最佳超参数训练