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

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

DDD
发布: 2024-12-30 01:53:09
原创
992 人浏览过

How Can I Efficiently Flatten a Shallow List in Python?

在 Python 中展平浅列表

在 Python 中,展平可迭代的浅列表可能是将嵌套结构转换为单级列表的常见任务。有多种方法可以实现此目的,但性能和代码可读性水平各不相同。

最初的尝试可能涉及嵌套列表理解,如下所示:

[image for image in menuitem for menuitem in list_of_menuitems]
登录后复制

但是,这将遇到 NameError,因为“menuitem”未在外部理解的范围内定义。

另一种选择是使用reduce函数:

reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
登录后复制

虽然此方法会展平列表,但使用 list(x) 调用将 QuerySet 对象转换为列表可能会妨碍其可读性。

一种高效而优雅的解决方案由 itertools 模块提供,特别是 itertools.chain。它允许在数据结构的扁平化版本上进行迭代,而无需创建新列表:

from itertools import chain
list(chain(*list_of_menuitems))
登录后复制

这种方法避免了将项目复制到新列表中,从而减少了开销。避免使用解包运算符 * 的稍微更明确的版本是:

chain = itertools.chain.from_iterable([[1, 2], [3], [5, 89], [], [6]])
print(list(chain))  # [1, 2, 3, 5, 89, 6]
登录后复制

这些技术对于展平浅列表同时平衡性能和可读性非常有价值。

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

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