我试图写一个简单的"用于遍历由嵌套列表表示的树的递归函数。我使用print
时输出正确,但我想在list
中返回结果。
代码
def trav(t):
while len(t) > 1:
for counter, i in enumerate(t):
if isinstance(i, list):
t2 = t.pop(counter)
trav(t2)
n=t.pop()
print(n)
运行它
tree1 = [1, [2, [4], [5]], [3]]
trav(tree1)
通过打印输出:
4
5
2
3
1
通过返回值获得所需的输出:
[4, 5, 2, 3, 1]
答案 0 :(得分:1)
声明累加器acc
,聚合循环中递归调用的返回值。
最后返回acc
+最后一个弹出的值(这很好地合并到基本情况中)。
def trav(t):
acc = []
while len(t) > 1:
for counter, i in enumerate(t):
if isinstance(i, list):
t2 = t.pop(counter)
acc += trav(t2)
n = t.pop()
return acc + [n]
tree1 = [1, [2, [4], [5]], [3]]
print(trav(tree1))
# [4, 5, 2, 3, 1]