首页 >后端开发 >Python教程 >Python 中迭代器如何有效地展平不规则嵌套列表?

Python 中迭代器如何有效地展平不规则嵌套列表?

Patricia Arquette
Patricia Arquette原创
2024-12-24 22:35:10687浏览

How Can Iterators Efficiently Flatten Irregularly Nested Lists in Python?

使用迭代器展平不规则列表列表

您提到过展平嵌套列表的现有解决方案在 [[[1, 2, 3], [ 等结构上失败4, 5]], 6]。此查询探讨了替代方法的可行性,特别是使用迭代器。

建议的方法:

建议的解决方案涉及利用生成器函数来简化扁平化过程并提高性能.

Python 2实现:

from collections import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, basestring):
            for item in flatten(x):
                yield item
        else:
            yield x

Python 3 实现:

from collections.abc import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, (str, bytes)):
            yield from flatten(x)
        else:
            yield x

迭代器的优点:

  • 迭代器通过一次懒惰地生成一个项目来节省内存,而不是存储整个展平列表。
  • 迭代器通过生成对原始元素的引用而不是创建重复值来防止复制。
  • 迭代器使代码更清晰,因为生成器函数封装了导航嵌套的逻辑

结论:

所提出的利用迭代器的方法提供了一种有效且高效的方法来展平不规则列表列表。与其他方法相比,它解决了任意嵌套深度的情况,并避免了递归或手动展平技术的缺点。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn