You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6中sum(iterable, [])扁平化嵌套列表的原理探究

关于用sum()扁平化嵌套列表的原理拆解

这招确实挺巧妙的!我来一步步给你讲清楚背后的逻辑:

先搞懂sum()函数的本质

sum(iterable, start)的核心逻辑非常简单:它会从初始值start开始,依次把可迭代对象里的每一个元素和当前的累加结果做「加法」操作,最后返回最终的累加值。

再看列表的「加法」特性

在Python里,列表之间的+运算符不是把元素数值相加,而是做列表拼接。举个例子:

[1, 2] + [3, 4]  # 结果是 [1, 2, 3, 4],而不是 [4, 6]

代入你的例子拆解流程

当你执行sum(a, [])(其中a = [[1, 2], [3, 4], [5, 6]])时,整个过程就像手动一步步拼接列表:

  • 第一步:初始累加值是[],和第一个元素[1,2]拼接 → [] + [1,2] = [1,2]
  • 第二步:用上面的结果和第二个元素[3,4]拼接 → [1,2] + [3,4] = [1,2,3,4]
  • 第三步:再用结果和第三个元素[5,6]拼接 → [1,2,3,4] + [5,6] = [1,2,3,4,5,6]

本质上就是把sum()当成了一个循环拼接列表的工具,利用列表加法的特性完成了两层嵌套列表的扁平化。

额外提醒

  • 这种方法只适用于两层嵌套的列表,如果是更深的嵌套(比如[[[1,2], 3], 4]),sum()只会拼接外层的列表,内层的嵌套不会被展开。
  • 从效率角度来说,这种方法并不推荐用于大数据量的场景:因为每次列表拼接都会创建新的列表对象,频繁的内存开销会拖慢速度。更高效的替代方案可以用列表推导式([x for sublist in a for x in sublist])或者itertools.chain.from_iterable(a)。

内容的提问来源于stack exchange,提问作者RhythmInk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:26:46