递归发生器不工作[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在使用他的代码来压缩嵌套元组:

def get_tuple_leaves(t, out=[]):
    for i in t:
        if isinstance(i, str):
            yield i
        else:
            get_tuple_leaves(i, out)

想法是得到一个输入,如(('a','b'),'c')转向('a','b','c')

但由于某种原因,递归调用永远不会被执行,输出是('c')

python recursion tuples
1个回答
2
投票

你没有回来,或者更确切地说,从你的递归电话中屈服。尝试:

def get_tuple_leaves(t, out=[]):
    for i in t:
        if isinstance(i, str):
            yield i
        else:
            yield from get_tuple_leaves(i, out)

print(list(get_tuple_leaves((('a', 'b'), 'c'))))

这导致:

['a', 'b', 'c']
© www.soinside.com 2019 - 2024. All rights reserved.