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中的第一个值.

Python-3.x相关问答推荐

海象表达可以放在方括号中而不是括号中吗?

在Python中从mySQL获取多行

为什么在Python中使用RANDINT函数时会出现此TypeError?

为什么空列表也能起作用?

基于其他列的条件向Panda数据框中添加值到新列

你能骗PIP 让它相信包已经安装了吗

如何查找以开头并替换的字符串

我正在使用 python 线程,当查询 mysql 时,代码似乎在运行并保持在无限循环中,没有返回任何错误

过滤列表中的所有字典以使用特定键并忽略其他键?

numpy是如何添加@运算符的?

通过最接近的匹配合并两个不同长度的列上的两个数据框

Python 3 `str.__getitem__` 的计算复杂度是多少?

python中两个连续的yield语句如何工作?

使用 Python 解析 JSON 嵌套字典

使用 distutils 分发预编译的 python 扩展模块

Python 3.10 模式匹配 (PEP 634) - 字符串中的通配符

如何编写可 Select 充当常规函数的 asyncio 协程?

Python 3 与 Python 2 映射行为

Python3 - 如何从现有抽象类定义抽象子类?

如何为 anaconda python3 安装 gi 模块?