美文网首页码农
不会栈溢出的嵌套结构展平

不会栈溢出的嵌套结构展平

作者: FSS_Sosei | 来源:发表于2019-03-05 16:47 被阅读0次

def nested_structure_flattening(sequence: iter) -> 'generator': #嵌套结构展平

    iterators = [iter(sequence)]

    while iterators != []:  #直到iterators列表为空

        #iterators最多嵌套深度n的n个迭代器在列表里

        for item in iterators[-1]:  #取iterators里最后那个迭代器进行for,对取到的迭代器内容从左往右遍历

            if isinstance(item, (list, set, tuple)):

                #item还是(list, set, tuple)之一的话,变iter(item)后添加到iterators结尾,随即break,开始深度遍历

                iterators.append(iter(item))

                break

            else:

                yield item

        else:

            #最深嵌套的迭代器耗尽,回过头来循环它的父迭代器。因为把列表变成iter(item)迭代器了,所以对父迭代器的再次遍历不会有已经提取的部分

            iterators.pop()

相关文章

  • 不会栈溢出的嵌套结构展平

    def nested_structure_flattening(sequence: iter) -> 'gener...

  • 虚拟机栈溢出

    错误原因:java.lang.StackOverflowError 栈内存溢出 栈溢出产生递归调用,循环遍历是不会...

  • JVM整理

    JVM基本结构 Java栈:1.过多的线程或栈帧过多时会造成溢出StackOverflowError。2.Java...

  • JVM

    JVM内存结构 程序计数器:程序执行字节码的行号指示器,线程私有,不会出现内存溢出[OOM]的区域 JVM栈:线程...

  • 2.1创建嵌套字

    2.1创建嵌套字 协议栈的内部结构 协议栈的内部分担功能 [图片上传失败...(image-4556fc-1587...

  • Python将多层嵌套的列表展平

    如果有一个列表嵌套列表的数据结构,形如: 现在我们想把它展平: 通常的做法是: 利用层次递归来实现,但是这样也有缺...

  • 浅说iOS为什么会上栈溢出

    简介 本文介绍了如下内容 栈的概念 为什么会发生栈溢出 栈溢出的几种栗子 怎么预防和发现栈溢出。 什么是栈? 从数...

  • 栈溢出简易指南

    栈 pwn 主题: 基本栈溢出 针对缓存区溢出防护的对策 shellcode 栈溢出的最终目的是执行shellco...

  • JVM

    1、一般什么情况会发生栈溢出、堆溢出 栈溢出(StackOverflowError) 1、栈是线程私有的,他的生命...

  • 自动释放池相关

    autoreleasepool 实现原理 为何 可以嵌套使用? 自动释放池结构 是以栈为节点通过双向链表的形式组...

网友评论

    本文标题:不会栈溢出的嵌套结构展平

    本文链接:https://www.haomeiwen.com/subject/iglouqtx.html