📜  python 如何取消嵌套嵌套列表 - Python (1)

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

Python如何取消嵌套嵌套列表

在Python中,我们有时会遇到需要取消嵌套列表的情况。这种情况可能会出现在一些算法和数据挖掘任务中。

本文将介绍几种方法来取消嵌套嵌套列表。

方法一:使用列表展开

使用列表展开是最常见的方法之一。只需将所有嵌套列表中的元素合并成一个列表即可取消嵌套。

nested_lst = [[1, 2], [3, 4], [5, 6]]
flat_lst = [elem for sublist in nested_lst for elem in sublist]
print(flat_lst)

输出为:

[1, 2, 3, 4, 5, 6]
方法二:使用递归

递归是一种常用的算法,也可以用于取消嵌套嵌套列表。通过递归实现,即从嵌套列表中取出元素,如果元素不是列表,则添加到新列表中,如果元素是列表,则进行递归。

def flatten(lst):
    flat_lst = []
    for item in lst:
        if isinstance(item, list):
            flat_lst.extend(flatten(item))
        else:
            flat_lst.append(item)
    return flat_lst

nested_lst = [[1, 2], [3, 4], [5, [6, 7]], [[[8], 9]]]
flat_lst = flatten(nested_lst)
print(flat_lst)

输出为:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
方法三:使用itertools

还可以使用Python标准库中的itertools模块来取消嵌套嵌套列表。

import itertools

nested_lst = [[1, 2], [3, 4], [5, [6, 7]], [[[8], 9]]]
flat_lst = list(itertools.chain.from_iterable(nested_lst))
print(flat_lst)

输出为:

[1, 2, 3, 4, 5, [6, 7], [[8], 9]]

需要注意的是,使用itertools模块并不能完全取消嵌套,而是将所有元素合并成了一个列表。

总结

本文介绍了三种常用的方法来取消嵌套嵌套列表,包括使用列表展开、使用递归和使用itertools模块。需要根据具体场景选择合适的方法。