python - 递归生成器不工作

标签 python recursion tuples

我正在使用他的代码来展平嵌套元组:

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')

最佳答案

您不会从递归调用中返回,或者更确切地说,不会产生结果。尝试:

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']

关于python - 递归生成器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49059247/

相关文章:

python - 如何在 NLTK 的 Wordnet 中检索目标同义词集的反义词同义词集?

javascript - 创建 DOM 树的函数中的递归

python - 从递归函数导出封闭形式

javascript - 如何从递归中的 Promise 获取值

c++ - 在不损失 C++ 速度的情况下改进元组映射的内存消耗

python - 不同平台上按钮的顺序(QDialogBu​​ttonBox)

python - argparse 子解析器的帮助中缺少字符

python - 如何使用 Python nltk 的 ProbDistI 类

python - 字符串列表到整数元组

c++ - 获取连接元组类型;结合 result_of 和 tuple_cat