Python的sum函数,为什么不适用于字符串?[关闭]

12 浏览
0 Comments

Python的sum函数,为什么不适用于字符串?[关闭]

Python有一个内置函数sum,它实际上相当于:

def sum2(iterable, start=0):
    return start + reduce(operator.add, iterable)

除了字符串之外的所有参数类型都适用。它适用于数字和列表,例如:

 sum([1,2,3], 0) = sum2([1,2,3],0) = 6    #注意:0是start的默认值,但为了清晰起见,我包括它
 sum({888:1}, 0) = sum2({888:1},0) = 888

为什么特别排除了字符串?

 sum( ['foo','bar'], '') # TypeError: sum() can't sum strings [use ''.join(seq) instead]
 sum2(['foo','bar'], '') = 'foobar'

我记得在Python列表中有关此的问题,所以解释或提供一个解释它的线程的链接都可以。

编辑:我知道标准方法是使用"".join。我的问题是为什么禁止使用sum来处理字符串,而对于列表等没有禁止。

编辑2:虽然我相信这并不需要,因为我已经得到了很多好答案,但问题是:为什么sum适用于包含数字或列表的可迭代对象,却不适用于包含字符串的可迭代对象?

0