我有一个类,每个实例基本上都是一堆嵌套列表 其中包含许多整数或包含整数的其他列表,或者a 列表清单等,如下:
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
时打印它们。
我很难过。请帮忙!
答案 0 :(得分:1)
如果您更改return kids(x)
以返回kids(self)
答案 1 :(得分:1)
这是一个函数,它是_walk
方法的一个更简单的版本,可以在任意迭代上执行您想要的操作。
kids
功能。
def walk(xs):
for x in xs:
try:
for y in walk(x):
yield y
except TypeError:
yield x
这可以简单地适用于Foo
对象的方法。