У меня есть класс, где каждый экземпляр в основном состоит из нескольких вложенных списков, каждый
из которых содержит число целых чисел или другой список, содержащий целые числа, или
список списков и т. д., например:
class Foo(list):
def __init__(self):
self.extend(
list(1), list(2), list(3), range(5), [range(3), range(2)]
)
Я хочу определить метод обхода вложенных списков и дать мне
одно целое число за раз, мало чем отличается от os.walk
. Я попробовал это:
def _walk(self):
def kids(node):
for x in node:
try:
for y in kids(x):
yield y
except TypeError:
yield x
return kids(x)
Но сразу же возникает ошибка остановки. Если я добавлю инструкцию print для печати каждого «узла» в первом цикле for, то появится функция, которая будет перебирать весь контейнер так, как я хочу, но без выдачи каждого узла. Он просто печатает их все в первый раз, когда я звоню next
на генератор.
Я в тупике. Пожалуйста помоги!