sum 函数不是通用的。那么哪个是?

mar*_*koj 2 python sum function python-3.x

我最近sum()在一些list字符上使用了该函数。发生错误:

TypeError: unsupported operand type(s) for +: 'int' and 'str'
Run Code Online (Sandbox Code Playgroud)

我已经开始编写一个用于替换的函数,并意识到问题是我已经为输出初始化了一个变量0,并使用 for 循环来添加每个元素。这可能是在内置函数中完成的。我意识到解决方案是将前面提到的输出变量初始化为type(arr[0])(). 我想问是否有另一个内置函数用于添加列表的所有元素,该函数适用于支持加法运算符的所有数据类型。

感谢您伸出援手!

注意:在 中help(sum)明确指出该函数是专门针对数值的。

joa*_*nis 5

我相信functools.reduce()这就是您正在寻找的。

import functools
import operator

functools.reduce(operator.add, ["a", "b"])  # -> "ab"
functools.reduce(operator.add, [1, 2])      # -> 3
Run Code Online (Sandbox Code Playgroud)

PS:如果您查看 的Python 手册条目reduce,它们会显示实现“大致相当于”。请注意默认情况下初始值是第一项本身,从而完全消除了确定其类型的问题。然而,结果是,如果您使用空列表调用它,则必须提供initializer或获取TypeError.