Я написал рекурсивный алгоритм для обхода вложенных итераторов в Python. Я не понимаю, почему он успешно распечатывает элементы, но не дает их в качестве генератора.
Пока мне удалось распечатать элементы:
tree = [[1,2],[3,[['abcde',['f']],'gh']]]
def traverse_printing(parent):
try:
for child in parent:
traverse(child)
except TypeError:
print(parent)
>>> traverse_printing(tree)
1
2
3
a
b
c
...
Я изо всех сил пытаюсь превратить его в генератор.
def traverse(parent):
try:
for child in parent:
traverse(child)
except TypeError:
yield parent
traverse(tree)
в настоящее время не работает. Результат:
>>> list(traverse(tree))
[]
Ожидаемый результат будет [1,2,3,'a','b','c','d','e','f','g','h']
Почему это так? Большое спасибо