相关疑难解决方法(0)

Python总和,为什么不是字符串?

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在包含数字的迭代或包含列表的迭代但不包含包含字符串的迭代?

python types sum built-in

61
推荐指数
6
解决办法
3万
查看次数

标签 统计

built-in ×1

python ×1

sum ×1

types ×1