为什么Python内置sum函数不能直接对多个列表执行求和拼接操作?
Python
sum([x,y]) 报错原因说明 首先给出复现问题的基础代码:
x = ['A', 'B', 'C'] y = ['D', 'E', 'F']
执行x + y可以正常得到拼接后的列表,是因为列表类型原生支持两个列表之间的+运算作为拼接操作,两边操作数都是列表,类型匹配符合运算要求。
sum([x,y]) 抛出类型错误的核心原因如下:
- Python 内置
sum()函数的完整语法为sum(可迭代对象, start=0),默认累加起始值是整数0。它的执行逻辑是先取start的值作为初始累加结果,再依次和可迭代对象内的每个元素执行+运算。 - 调用
sum([x,y])时没有手动指定start参数,初始值默认取0,第一步运算就会执行0 + x,也就是整数和列表做+运算,Python 不支持这种操作数类型组合的+运算,因此抛出报错:
TypeError: unsupported operand type(s) for +: 'int' and 'list'
补充说明
如果一定要用sum实现列表拼接,可以手动将起始值设为空列表:
sum([x,y], []) # 输出:['A', 'B', 'C', 'D', 'E', 'F']
注意这种拼接方式效率偏低,仅适合少量列表的拼接场景,大量列表拼接更推荐使用itertools.chain或者列表解包语法[*x, *y]。
内容的提问来源于stack exchange,提问作者Myccha
相关产品推荐
相关产品推荐

