条件树和回溯

时间:2012-09-05 13:36:03

标签: python

我有一些图表,我从中生成代码。一个节点的一个条件。例如,生成的代码可能如下所示:

def function():
    steps = []

    if True:
        steps.append(1)

        if True:
            steps.append(2)

            if False:
                steps.append(3)
                return 'a', steps

            if False:
                steps.append(4)
                return 'b', steps


        if True:
            steps.append(5)

            if True:
                steps.append(6)

                if False:
                    steps.append(7)
                    return 'a', steps
            if True:
                steps.append(8)
                return 'b', steps

我用True / False替换了真实条件,以使示例更清洁。

此函数返回元组('b', [1, 2, 5, 6, 8]),因此获取了一些值和步骤。我想修改此代码以删除不成功的步骤。所以修改后的函数应该返回('b', [1, 5, 8])

我的问题是,最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是在每个失败的小组之后pop

def function():
    steps = []

    if True:
        steps.append(1)

        if True:
            steps.append(2)

            if False:
                steps.append(3)
                return 'a', steps

            if False:
                steps.append(4)
                return 'b', steps

            steps.pop() #removes 2 from steps

        if True:
            steps.append(5)

            if True:
                steps.append(6)

                if False:
                    steps.append(7)
                    return 'a', steps

            steps.pop() #remove the 6

            if True:
                steps.append(8)
                return 'b', steps

        steps.pop() #remove the 5
    steps.pop() # removes the 1