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

如何采用更Pythonic的方式展开Python中的多层嵌套列表?

更Pythonic的嵌套列表展开方法

当然有啦!Python里有不少更简洁、更贴合Python风格的方法来处理这种固定层数的嵌套列表展开,给你分享几个常用的方案:

1. 列表推导式(最推荐)

这是Python处理这类问题的标准写法,一行代码搞定,逻辑和你原来的嵌套循环完全一致,但更紧凑易读:

myList = [[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]
simpleList = [j for i in myList for j in i]
print(simpleList)
# 输出: [[1, 2, 3], [4, 5, 6], [2, 3, 4], [3, 4, 5], [4, 6, 7], [5, 7, 9]]

它的执行效率和嵌套循环几乎一致,但代码更简洁,完全符合Python追求的“优雅”原则。

2. 使用itertools.chain.from_iterable()

如果你需要处理大型数据集或者惰性可迭代对象,itertools里的这个方法会更高效——它采用惰性迭代的方式,不会提前把全部数据加载到内存里:

import itertools

myList = [[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]
simpleList = list(itertools.chain.from_iterable(myList))
print(simpleList)
# 输出和上面一致

这个方法特别适合处理生成器、迭代器这类不希望一次性加载全部数据的场景。

3. 用sum()函数(小数据量适用)

这是个小巧的技巧,但只适合数据量不大的情况——因为每次列表相加都会创建新的列表,数据量大时效率会直线下降:

myList = [[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]
simpleList = sum(myList, [])
print(simpleList)
# 输出同样符合预期

这个写法虽然短,但不推荐在生产环境的大数据场景中使用,只适合快速测试或者小数据集的临时处理。

总的来说,列表推导式是大多数情况下的最优选择,兼顾了可读性和效率;如果处理大型数据,优先考虑itertools.chain.from_iterable()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:41:53