• 你知道如何将python中嵌套的列表扁平化吗?


    楔子

    将python中嵌套的列表扁平化,指的就是:

    lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]]
    # 类似于上面的列表,我们要得到下面的结果
    [1, 3, 3, 5, 6, 8, "aaa", 250]
    

    那么我们要如何做呢?

    yield和yield from

    关于如何把一个嵌套的列表扁平化,我们需要使用yield和yield from。这两位老铁的底层实现原理我不想深究,因为牵扯的东西太多了,况且针对目前的问题我们也用不到,这里我们简单的说一下。

    def foo():
        yield [1, 2, 3]
    
    
    def bar():
        yield from [1, 2, 3]
    
    
    print(foo().__next__())  # [1, 2, 3]
    print(bar().__next__())  # 1
    
    
    """
    我们看到关于yield,它是把yield后面的整个元素都迭代出来
    但是对于yield from,它的后面必须跟着一个可迭代的对象,然后依次迭代这个可迭代对象里面的每一个元素
    """
    

    因此,我们就找到了方法。

    def flat(l: list):
        for _ in l:
            if isinstance(_, list):
                yield from flat(_)
            else:
                yield _
    
    
    lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]]
    print([_ for _ in flat(lst)])  # [1, 3, 3, 5, 6, 8, 'aaa', 250]
    
  • 相关阅读:
    django1.8升级1.9的几个问题
    App免费推广途径概要
    Django Channels 入门指南
    小谈业务应用架构
    比技术债更可怕的人债
    js数据结构与算法--递归
    常见react面试题汇总
    如何使用koa实现socket.io官网的例子
    Vue插槽
    10分钟了解 react 引入的 Hooks
  • 原文地址:https://www.cnblogs.com/traditional/p/12422934.html
Copyright © 2020-2023  润新知