美文网首页
解决:python 递归结束时,储存的中间变量消失了

解决:python 递归结束时,储存的中间变量消失了

作者: 辘轳鹿鹿 | 来源:发表于2021-11-25 15:20 被阅读0次

写了一个递归函数,将一棵字典树的每一条分支解析出来,结果发现每次递归结束后,存储每一个分支的列表都突然变空

def tree_to_code(myTree,nodeTxt,rulelist,rulelib):
    firstStr = list(myTree.keys())[0]
    #print("*",firstStr)
    rulelist.append(firstStr)
    secondDict = myTree[firstStr]
    for key in secondDict.keys():
        if type(secondDict[key]).__name__ == 'dict':
            rulelist.append(key)
            #print("**", key)
            tree_to_code(secondDict[key], str(key),rulelist,rulelib)

        else:
            rulelist.append(key)
            rulelist.append(secondDict[key])
            rulelib.ruleset.append(rulelist)
            print(rulelist)
            rulelist.pop()
            rulelist.pop()
    if rulelist:
        rulelist.pop()
    if rulelist:
        rulelist.pop()

参考了这个博主的文章
python 递归时存储中间变量要用copy 方法,否则出栈就废了_yyt200808的博客-CSDN博客

原来 image.png

这一行直接复制就可以了

def tree_to_code(myTree,nodeTxt,rulelist,rulelib):
    firstStr = list(myTree.keys())[0]
    #print("*",firstStr)
    rulelist.append(firstStr)
    secondDict = myTree[firstStr]
    for key in secondDict.keys():
        if type(secondDict[key]).__name__ == 'dict':
            rulelist.append(key)
            #print("**", key)
            tree_to_code(secondDict[key], str(key),rulelist,rulelib)

        else:
            rulelist.append(key)
            rulelist.append(secondDict[key])
            rulecopy=rulelist.copy()
            rulelib.ruleset.append(rulecopy)
            print(rulelist)
            rulelist.pop()
            rulelist.pop()
    if rulelist:
        rulelist.pop()
    if rulelist:
        rulelist.pop()

相关文章

  • 解决:python 递归结束时,储存的中间变量消失了

    写了一个递归函数,将一棵字典树的每一条分支解析出来,结果发现每次递归结束后,存储每一个分支的列表都突然变空 参考了...

  • 2019-08-08

    变量: 是为了储存程序运算过程中的一些中间结果,为了方便日后调用。 (python不区分常量、变量) studen...

  • Python 小结

    Python小结 1.1变量 name =‘李四’ 变量name储存了信息‘李四’ 变量名只能包含字母、数字、和下...

  • Python基础入门

    深浅拷贝 Python中变量储存的是变量的地址,该地址指向储存的数值,对于复杂数据结构来说,比如list其内部存储...

  • chapter 1 变量和数据类型

    1 变量变量:变量储存了一个值,与变量相关联的信息;在程序中可以随时修改变量的值,而python将始终记录变量的最...

  • Java基础学习(九)- 集合

    面向对象开发时应该储存多个对象,而要储存多个对象就不能是基本变量了,应该是一个容器变量,这时候集合的出现就解决了我...

  • 递归

    递归应用场景 递归的概念 简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量递归有助于编程者解决复杂的问...

  • python中变量储存的方式

    转载:https://www.cnblogs.com/Liubit/p/7668476.html

  • Python yield

    参考:Python yield 使用浅析 - IBM 递归中使用yield 有时候yield就可以解决递归的问题,...

  • day07递归-迷宫问题

    递归 概念: 递归就是自己调用自己,每次调用都传入不同的变量,递归有助于编程者解决复制的问题,同时也可以让代码变得...

网友评论

      本文标题:解决:python 递归结束时,储存的中间变量消失了

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