Python中reduce()函数的用法详细解读
Python中的reduce()函数
reduce()源码:
def reduce(function, sequence, initial=None): # real signature unknown; restored from __doc__ """ reduce(function, sequence[, initial]) -> value Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty. """ pass
从上述可以看到,reduce()有三个参数,第一个是函数function,第二个是序列sequence,第三个是initial,为初始值,默认为None
reduce(func,lst),其中func必须至少有两个参数。每次func计算的结果继续和序列的下⼀个元素做累积计算。
注意:reduce()传⼊的参数func必须至少接收2个参数。
需求:计算 list1 序列中各个数字的累加和。
示例代码1:
import functools list1 = [1, 2, 3, 4, 5] # 方法一 def func(a, b): return a + b result = functools.reduce(func, list1) print(result) # 15 # 方法二 result2 = functools.reduce(lambda x, y: x + y, list1) print(result2)
运行结果:
示例代码2:
import functools list1 = [1, 2, 3, 4, 5] # 方法一 def func(a, b): return a * b result = functools.reduce(func, list1) print(result) # 15 # 方法二 result2 = functools.reduce(lambda x, y: x * y, list1) print(result2)
运行结果:
示例代码3:
import functools list1 = [1, 2, 3, 4, 5] list2 = [1, 1, 1, 1, 1] list3 = [0, 0, 0, 0, 0] list4 = [0, 0, 0, 0, 1] result1 = functools.reduce(lambda x, y: x & y, list1) result2 = functools.reduce(lambda x, y: x & y, list2) result3 = functools.reduce(lambda x, y: x | y, list3) result4 = functools.reduce(lambda x, y: x | y, list4) print(result1) print(result2) print(result3) print(result4)
运行结果:
示例代码4:
from functools import reduce def add(x, y): return x + y a = [1, 2, 3, 4, 5] # reduce()两个参数 ret1 = reduce(add, a) print(ret1) # reduce()三个参数 ret2 = reduce(add, a, 6) print(ret2)
运行结果:
示例代码5: 【mongo和es语句中使用reduce】
from functools import reduce from mongoengine import Q from mongoengine.queryset.visitor import Q from elasticsearch_dsl import Q as EQ # query_list = ['x', 'y', 'z'] # 字符串报错:TypeError: unsupported operand type(s) for &: 'str' and 'str' # query_list = [2, 3] # 2 # query_list = [2, 3, 4] # 0 # mongo中使用 query_list = [Q(aa="aa"), Q(bb='bb'), Q(cc='cc'), Q(dd='dd')] # (Q(**{'aa': 'aa'}) & Q(**{'bb': 'bb'}) & Q(**{'cc': 'cc'}) & Q(**{'dd': 'dd'})) res = reduce(lambda x, y: x & y, query_list) print(res) # es中使用 query_list = [EQ(aa="aa"), EQ(bb='bb'), EQ(cc='cc'), EQ(dd='dd')] # MatchAll(dd='dd') res = reduce(lambda x, y: x & y, query_list) print(res)
运行结果:
到此这篇关于Python中reduce()函数的用法详细解读的文章就介绍到这了,更多相关Python中reduce()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
今天小编就为大家分享一篇关于PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-02-02解决Python3 struct报错argument for 's'&
这篇文章主要为大家介绍了解决Python3 struct报错argument for 's' must be a bytes object方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-08-08
最新评论