reduce
函数如何在python3中使用三个参数而不是两个参数.
tup = (1,2,3)
reduce(lambda x, y: x+y, tup)
我明白了.这就是tup
个元素的总和.但是,如果你给reduce函数三个参数,如下所示,
tup = (1,2,3)
reduce(lambda x, y: x+y, tup, 6)
这会给你一个12
的值.
reduce
函数如何在python3中使用三个参数而不是两个参数.
tup = (1,2,3)
reduce(lambda x, y: x+y, tup)
我明白了.这就是tup
个元素的总和.但是,如果你给reduce函数三个参数,如下所示,
tup = (1,2,3)
reduce(lambda x, y: x+y, tup, 6)
这会给你一个12
的值.
如果省略第三个参数,则tup
中的first值将用作初始值设定项.
或者,换一种方式,reduce()
将可选的第三个参数放在第二个参数(如果存在)的值之前.
此外,这意味着,如果第二个参数是empty序列,那么第三个参数将作为默认值,就像只有one个元素的第二个参数(没有显式初始值设定项参数)将作为默认返回值一样.
functools.reduce()
documentation包括函数的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
请注意,当不是None
时,initializer
如何被用作第一个值,而不是iterable
中的第一个值.