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

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

Mary-Kate Olsen
发布: 2024-12-30 18:38:20
原创
575 人浏览过

How to Efficiently Flatten Irregularly Nested Lists in Python?

如何展平不规则的嵌套列表列表

尽管有关于展平列表结构的讨论,但当列表被嵌套得很深。下面介绍了一种有效的方法:

递归函数方法

def flatten(x):
    result = []
    for el in x:
        if hasattr(el, "__iter__") and not isinstance(el, basestring):
            result.extend(flatten(el))
        else:
            result.append(el)
    return result
登录后复制

此函数检查每个元素是否可迭代(字符串除外),如果为真则递归压平它。不可迭代的元素将附加到结果中。

生成器函数方法

使用生成器函数可以增强扁平化过程的可读性和性能:

Python 2(使用 Iterable ABC):

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(使用 str 和 bytes 的元组):

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中文网其他相关文章!

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