📜  python unlist 展平嵌套列表 - Python (1)

📅  最后修改于: 2023-12-03 15:19:02.005000             🧑  作者: Mango

Python 展平嵌套列表

在Python编程中,经常会遇到多维列表的情况,有时候需要将嵌套的列表展平为一维,方便我们处理数据。本文将介绍两种展平嵌套列表的方法。

方法一:使用递归函数

递归函数是指自己调用自己的函数,这种函数可以很好地处理多维列表的情况。以下是展平嵌套列表的递归函数代码:

def flatten_list(nested_list):
    """
    将嵌套列表展平为一维列表
    """
    result = []
    for item in nested_list:
        if isinstance(item, (list, tuple)):
            result.extend(flatten_list(item))
        else:
            result.append(item)
    return result

这个函数接受一个嵌套列表作为输入,返回一个展平后的一维列表。函数的核心代码是一个递归循环,当遇到一个列表或元组时,就递归调用函数本身,将遇到的每个元素都展平到结果列表中。

方法二:使用yield生成器

另一个展平列表的方法是使用Python的yield关键字创建一个生成器。以下是展平嵌套列表的生成器代码:

def flatten_generator(nested_list):
    """
    将嵌套列表展平为一维列表
    """
    for item in nested_list:
        if isinstance(item, (list, tuple)):
            yield from flatten_generator(item)
        else:
            yield item

这个生成器的语法略微有点复杂,但是它也可以很好地展平嵌套列表。类似于递归函数,当遇到一个列表或元组时,生成器就使用yield from关键字递归调用自己,直到遇到一个基本类型的元素,然后再使用yield关键字将该元素返回。

结论

以上介绍了两种展平嵌套列表的方法,递归函数和生成器。这两种方法都可以用来展平任意维度的嵌套列表,但使用生成器更加高效,因为其实时地生成结果,而不是在内存中创建一个临时的列表。当处理大量数据时,使用生成器更能节省内存的开销。