Python有一个内置函数sum,它实际上相当于:
def sum2(iterable, start=0):
return start + reduce(operator.add, iterable)
Run Code Online (Sandbox Code Playgroud)
除了字符串之外的所有类型的参数.它适用于数字和列表,例如:
sum([1,2,3], 0) = sum2([1,2,3],0) = 6 #Note: 0 is the default value for start, but I include it for clarity
sum({888:1}, 0) = sum2({888:1},0) = 888
Run Code Online (Sandbox Code Playgroud)
为什么特别遗漏了字符串?
sum( ['foo','bar'], '') # TypeError: sum() can't sum strings [use ''.join(seq) instead]
sum2(['foo','bar'], '') = 'foobar'
Run Code Online (Sandbox Code Playgroud)
我似乎记得在Python列表中讨论的原因,所以解释或解释它的线程的链接会很好.
编辑:我知道标准的方法是做"".join.我的问题是为什么禁止对字符串使用sum的选项,并且没有禁止,例如,列表.
编辑2:虽然我认为这不是必需的,但我得到了所有的好答案,问题是:为什么sum在包含数字的迭代或包含列表的迭代但不包含包含字符串的迭代?