0
我有一个循环遍历任意数量的对象的递归函数,并且他们的孩子收集年龄符合筛选年龄的孩子。python - 从递归函数返回对象的平面列表
在这种情况下,我正在寻找循环每个人和他们的孩子收集任何人的年龄是2或4.但我不完全知道如何不断建立一个单子,然后返回它。现在它只返回最后找到的Person。
UPDATED 我对递归函数做了一些更改,总是附加到传递的变量。这是一个合适的解决方案?
from random import randint
NODES = []
class Person():
def __init__(self, name="", age=0, children=None):
self.name = name
self.age = (randint(0,4))
self.children = children if children is not None else []
for x in xrange(5):
new = Person()
NODES.append(new)
for c in xrange(5):
new.children.append(Person())
def get_nodes(items=[], ages=[], results=[]):
print "Searching..."
# pseudo code
for item in items:
if item.age in ages:
print "\t","valid age"
results.append(item)
results + get_nodes(items=item.children, ages=ages, results=results)
return results
AGED_NODES = get_nodes(items=NODES, ages=[2, 4], results=[])
print len(AGED_NODES)
print AGED_NODES
把它包在非递归函数A和从A返回扁平列表 – erip