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.