我正在使用他的代码来展平嵌套元组:
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/