我有一個類,其中每個實例是一堆嵌套列表的基本上,每個 的持有數的整數或含整數的另一個列表或列表的 列表等,像這樣:爲什麼不會遞歸生成器工作?
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)
但它立即引發了一個stopiteration錯誤。如果我添加一個打印語句來打印第一個for循環中的每個「節點」,該函數似乎以我想要的方式遍歷整個容器,但不會產生每個節點。它只是在我第一次撥打發電機上的next
時打印出來。
我很難過。請幫忙!
是你的類的一個實例變量(以及一個局部變量)? – 2010-08-30 17:08:15
'return kids(x)'會給出'NameError'! – 2010-08-30 17:10:28
'self.extend(list(1),list(2),list(3),range(5),[range(3),range(2)])'也沒有意義。如果你想編寫僞代碼,那很好,但是不要讓它看起來像真正的Python代碼! – 2010-08-30 17:12:39