您当前的位置: 首页 >  Python

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python中reduce()函数用法详解

IT之一小佬 发布时间:2022-07-21 22:06:45 ,浏览量:0

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)

运行结果:

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0400s