首页 > 后端开发 > Python教程 > 如何在 Python 中有效地展平列表列表?

如何在 Python 中有效地展平列表列表?

Patricia Arquette
发布: 2024-12-30 18:14:10
原创
427 人浏览过

How Can I Efficiently Flatten a List of Lists in Python?

展平列表列表

您有一个列表列表,并希望将其转换为单个平面列表。例如,您可能有:

[
    [1, 2, 3],
    [4, 5, 6],
    [7],
    [8, 9]
]
登录后复制

并旨在获得:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
登录后复制

解决方案

嵌套列表理解提供了一个优雅的展平列表列表的解决方案:

flat_list = [x for xs in xss for x in xs]
登录后复制

这段代码迭代 xss 中的每个子列表及其元素,将结果累积到 flat_list 中。

或者,您可以使用带有连接的列表理解进行展平,或使用 sum() 函数:

flat_list = [j for i in xss for j in i]
flat_list = sum(xss, [])  # or sum(xss)
登录后复制

性能比较

虽然这些方法提供了等效的结果,他们的表现各不相同。基准测试显示,嵌套列表理解比其他方法要快得多,特别是对于大型输入列表。

这种卓越的性能源于以下事实:列表理解一次生成单个列表,仅复制每个项目一次。相比之下,基于 join 的方法会创建大量中间列表,而 sum() 方法涉及更复杂的操作。

递归方法

如果您的列表列表具有任意嵌套深度,您可能需要递归方法来完全展平。考虑以下函数:

def flatten_completely(xss):
    return [x for elem in xss for x in flatten_completely(elem) if not isinstance(x, list)] if isinstance(xss, list) else [xss]
登录后复制

以上是如何在 Python 中有效地展平列表列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板