我想转换我的代码,这样我就不必使用额外的变量(即下例中的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)
答案 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
此处充当累加器参数;也许这就是你想到的那个词?