sum 函数不是通用的。那么哪个是?
The sum function isn't universal. So which is?
我最近对 list
个字符使用了 sum()
函数。发生错误:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我已经开始编写一个用于替换的函数并意识到问题是我已经为输出初始化了一个变量 0
并使用了一个 for 循环来添加每个元素。这可能是在内置函数中完成的。我意识到一个解决方案是将前面提到的输出变量初始化为 type(arr[0])()
。我想问一下是否有另一个内置函数用于添加列表的所有元素,该函数适用于支持加法运算符的所有数据类型。
感谢联系!
注意:
help(sum)
中明确指出该函数是专门针对数值的
您可以通过将它们转换为字符串来添加所有内容:
things = [1, 3.14, "string", object()]
result = ""
for thing in things:
result += str(thing)
print(result)
我相信 functools.reduce()
就是您要找的。
import functools
import operator
functools.reduce(operator.add, ["a", "b"]) # -> "ab"
functools.reduce(operator.add, [1, 2]) # -> 3
PS:如果您查看 Python manual entry for reduce
,它们会显示“大致等同于”的实现。请注意默认情况下初始值是第一项本身,从而完全消除了确定其类型的问题。然而,结果是,如果您使用空列表调用它,则必须提供 initializer
或获取 TypeError
.
我最近对 list
个字符使用了 sum()
函数。发生错误:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我已经开始编写一个用于替换的函数并意识到问题是我已经为输出初始化了一个变量 0
并使用了一个 for 循环来添加每个元素。这可能是在内置函数中完成的。我意识到一个解决方案是将前面提到的输出变量初始化为 type(arr[0])()
。我想问一下是否有另一个内置函数用于添加列表的所有元素,该函数适用于支持加法运算符的所有数据类型。
感谢联系!
注意:
help(sum)
中明确指出该函数是专门针对数值的
您可以通过将它们转换为字符串来添加所有内容:
things = [1, 3.14, "string", object()]
result = ""
for thing in things:
result += str(thing)
print(result)
我相信 functools.reduce()
就是您要找的。
import functools
import operator
functools.reduce(operator.add, ["a", "b"]) # -> "ab"
functools.reduce(operator.add, [1, 2]) # -> 3
PS:如果您查看 Python manual entry for reduce
,它们会显示“大致等同于”的实现。请注意默认情况下初始值是第一项本身,从而完全消除了确定其类型的问题。然而,结果是,如果您使用空列表调用它,则必须提供 initializer
或获取 TypeError
.