如何在python的递归函数中使用迭代器?

时间:2011-09-13 02:08:04

标签: python variables recursion iterator global

我想转换我的代码,这样我就不必使用额外的变量(即下例中的s)。我知道有一种方法可以使用迭代器,但我不知道如何使用迭代器。有人可以帮忙吗?非常感谢。

from numbers import Number

a = [[[1,2],[3,4]],[[5,6],[7,8]]]


def trav(root,s):
    if isinstance(root,Number):
        print(str(root) + " -> " + s)
    else:
        s = s + "0"
        trav(root[0],s)
        s = s[:-1]

        s = s + "1"
        trav(root[1],s)
        s = s[:-1]

s = ""
trav(a,s)

1 个答案:

答案 0 :(得分:1)

为什么不呢......

def trav(root, s=""):

然后您可以省略s = ""行并将其称为trav(a)?此外,如果你愿意内联一两件事,你可以做更少的切片:

from numbers import Number

a = [[[1,2],[3,4]],[[5,6],[7,8]]]


def trav(root, s=""):
    if isinstance(root, Number):
        print("%s -> %s" % (root, s))
    else:
        trav(root[0], s + "0")
        trav(root[1], s + "1")

trav(a)

请注意,这些都与迭代器无关;我不确定你在想什么。 s此处充当累加器参数;也许这就是你想到的那个词?