Python的sum函数,为什么不适用于字符串?[关闭]
- 论坛
- Python的sum函数,为什么不适用于字符串?[关闭]
12 浏览
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适用于包含数字或列表的可迭代对象,却不适用于包含字符串的可迭代对象?