使用三个参数减少功能

cha*_*pkr 14 python reduce initializer python-3.x

reduce函数如何在python3中使用三个参数而不是两个参数.所以,对于两个,

tup = (1,2,3)
reduce(lambda x, y: x+y, tup)
Run Code Online (Sandbox Code Playgroud)

我得到这个.这只是总结了所有元素tup.但是,如果你给reduce函数三个参数,如下所示,

tup = (1,2,3)
reduce(lambda x, y: x+y, tup, 6)
Run Code Online (Sandbox Code Playgroud)

这会给你一个价值12.我检查了python3的文档,它说第三个参数是初始化器.那就是说,如果没有插入第三个参数,那么默认初始化器是什么?

Mar*_*ers 19

如果省略第三个参数,则第一个tup将用作初始值设定项.

或者,以不同的方式,reduce()将可选的第3个参数放在第二个参数的值之前(如果存在).

此外,这意味着如果第二个参数是一个序列,那么第三个参数将作为默认值,就像只有一个元素(并且没有显式初始化参数)的第二个参数一样,将是默认的返回值.

functools.reduce()文档包含该函数的Python版本:

def reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        value = next(it)
    else:
        value = initializer
    for element in it:
        value = function(value, element)
    return value
Run Code Online (Sandbox Code Playgroud)

请注意initializer,如果不是None,则将其用作第一个值而不是第一个值iterable.