Python中reduce()函数的语法参数与作用详解

 更新时间:2023年08月21日 09:59:14   作者:Alex landi  
这篇文章主要介绍了Python中reduce()函数的语法参数与作用详解,reduce函数是通过函数对迭代器对象中的元素进行遍历操作,Python3.x中reduce函数已经从内置函数中取消了,转而放在functools模块中,需要的朋友可以参考下

reduce reduce函数介绍

reduce函数是通过函数对迭代器对象中的元素进行遍历操作(这一点和 map/filter 函数的原理很相似),但需要注意的是 reduce 函数返回的是计算的结果,而 map/filter 返回的是作用后的迭代器对象

Python3.x中reduce函数已经从内置函数中取消了,转而放在functools模块中,调用reduce函数的话需要先从functools模块中导入;

如下:

from functools import reduce

语法:

reduce(function,sequence[,initial])
#function---必须是有两个参数的函数。function是必需参数
#sequence---元组、列表、字典等可迭代对象均可。是必需参数
#initial---设置初始值,是可选参数

reduce的函数过程:

  • 无initial初始值时:

在接受到function和sequence两必需参数后,reduce函数将sequence中的第一个、第二个元素作为function的实参传递给function,function执行后的结果和sequence中的第三个元素作为新一次function的实参继续直行。以此类推sequence中的元素遍历完之后function得到的结果为reduce函数的返回值。

from functools import reduce
list_a=[1,2,3,4,5]
n=reduce(lambda x,y:x+y ,list_a)
print(n)

 #运行结果为
15

  • 有initial初始值时:

在接收到function和sequence必需参数和initial可选参数后,reduce将初始值initial和sequence中的第一个元素作为实参传递给function,function执行后的结果和sequence的第二个参数作为新一次function的实参继续执行,一次类推sequence中元素遍历完之后function得到的结果作为reduce函数的返回值。

from functools import reduce
list_a=[1,2,3,4,5]
n=reduce(lambda x,y:x+y ,list_a,10)   #设置initial初值为10
print(n)

#运行结果为
25

reduce的参数

函数reduce最多只能接受三个参数,即除去两个必需参数之外,可选参数initial只能指定一个,否则会抛出异常。

from functools import reduce
n=reduce(lambda x,y:x*y,[1,2,3,4,5],6)
print(n)

#运行结果为
720

from functools import reduce
n=reduce(lambda x,y:x*y,[1,2,3,4,5],6,7)
print(n)

#此时参数超出上限,会抛出异常
Traceback (most recent call last):
  File "C:\Users\asus\Desktop\py-script", line 2, in <module>
    n=reduce(lambda x,y:x*y,[1,2,3,4,5],6,7)
TypeError: reduce expected at most 3 arguments, got 4

reduce函数的应用

1.reduce的普通应用,直接调用Python内置函数或者用户自定义的函数。

from functools import reduce    
def add(x,y):
	return x+y
list_a=[1,2,3,4,5]
n=reduce(add ,list_a,)     #调用用户自定义的函数(也可直接调用Python的内置函数)
print(n)

#执行结果
15

2.reduce结合匿名函数lambda

from functools import reduce
list_a=[1,2,3,4,5]
n=reduce(lambda x,y:x*y ,list_a,)
print(n)

#运行结果为
120

reduce结合lambda可以很容易实现累加、累乘等,相较于for循环,此种实现方法更简洁代码可读性更强,符合Python的简洁特性。

3.reduce函数可以通过初值initial和其他筛选条件实现数据过滤等

到此这篇关于Python中reduce()函数的语法参数与作用详解的文章就介绍到这了,更多相关Python中reduce()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Django框架中编写Context处理器的方法

    在Django框架中编写Context处理器的方法

    这篇文章主要介绍了在Django框架中编写Context处理器的方法,Django是重多高人气Python框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • Python中 Lambda表达式全面解析

    Python中 Lambda表达式全面解析

    Lambda是一种匿名函数,当我们需要重复调用某一函数,又不想写那么多代码时可以使用lambda表达式来代替。本文给大家介绍Python中 Lambda表达式,需要的朋友一起学习吧
    2016-11-11
  • 手把手教你进行Python虚拟环境配置教程

    手把手教你进行Python虚拟环境配置教程

    这篇文章主要介绍了手把手教你进行Python虚拟环境配置,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧,需要的朋友可以参考下
    2020-02-02
  • 详解Pandas与openpyxl库的超强结合

    详解Pandas与openpyxl库的超强结合

    Pandas绝对是Python中处理Excel最快、最好用的库,但是使用 openpyxl 的一些优势是能够轻松地使用样式、条件格式等自定义电子表格,感兴趣的可以了解一下
    2021-09-09
  • 使用Python实现批量修改文件的修改日期功能

    使用Python实现批量修改文件的修改日期功能

    在日常的文件管理中,您可能需要批量修改文件的修改日期,比如,您可能希望将某个文件夹中的所有文件的修改日期随机设置为6到8月份之间的日期,这在数据整理中可能非常有用,本文将详细介绍如何使用Python实现这一功能,需要的朋友可以参考下
    2024-10-10
  • Python中copy和deepcopy的使用分析

    Python中copy和deepcopy的使用分析

    这篇文章主要介绍了Python中copy和deepcopy的使用,浅拷贝等于赋值,也可以通过copy实现,copy仅拷贝对象本身,deepcopy是真正意义上的复制,深拷贝,被复制对象完全复制一遍作为独立的新个体,新开辟一块空间,需要详细了解的朋友可以参考下
    2021-10-10
  • python打包生成的exe文件运行时提示缺少模块的解决方法

    python打包生成的exe文件运行时提示缺少模块的解决方法

    今天小编就为大家分享一篇python打包生成的exe文件运行时提示缺少模块的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 使用Python绘制蛇年春节祝福艺术图

    使用Python绘制蛇年春节祝福艺术图

    这篇文章主要介绍了如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下
    2025-01-01
  • python实现查找excel里某一列重复数据并且剔除后打印的方法

    python实现查找excel里某一列重复数据并且剔除后打印的方法

    这篇文章主要介绍了python实现查找excel里某一列重复数据并且剔除后打印的方法,涉及Python使用xlrd模块操作Excel的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 深入理解Python虚拟机中的Code obejct

    深入理解Python虚拟机中的Code obejct

    在本篇文章当中主要给大家深入介绍在 cpython 当中非常重要的一个数据结构 code object! 我们简单介绍了一下在 code object 当中有哪些字段以及这些字段的简单含义,在本篇文章当中将会举一些例子以便更加深入理解这些字段
    2023-04-04

最新评论