Python中sum(l,[])与列表加法操作结果差异的技术疑问
为什么
sum(l, [])和列表加法的结果不一样? 先看你的示例代码:
l = [ [[1,2,3], [2,3,4]] ]
1. sum(l, [])的执行逻辑
sum(iterable, start)的作用是把可迭代对象里的每个元素依次和初始值start做加法,最终返回累加结果。
对你的例子来说:
- 可迭代对象
l里只有一个元素:[[1,2,3], [2,3,4]] - 初始值
start是空列表[] - 实际执行的是:
[] + [[1,2,3], [2,3,4]],也就是把l里的唯一元素拼接到初始空列表里,结果自然是[[1,2,3], [2,3,4]]
2. 列表加法[] + l的执行逻辑
列表加法(包括直接调用__add__方法)是把两个列表的元素合并成一个新列表,这里的两个操作数分别是[]和l:
l本身是一个列表,它的元素是[[1,2,3], [2,3,4]]- 所以
[] + l等价于把l的所有元素(也就是那个二维列表)加到空列表里,结果就是[[[1,2,3], [2,3,4]]]
核心差异总结
sum(l, [])是遍历l的内部元素,将每个元素与初始值做拼接[] + l是直接把l作为一个完整列表,和空列表做拼接
内容的提问来源于stack exchange,提问作者조해피
相关产品推荐
相关产品推荐

