【发布时间】:2015-12-02 14:24:25
【问题描述】:
我有一个递归函数,它遍历任意数量的对象,他们的孩子收集年龄符合过滤年龄的孩子。
在这种情况下,我希望遍历每个人和他们的孩子,收集年龄为 2 或 4 岁的任何人。但是我不完全确定如何连续构建一个列表然后返回它。现在它只返回最后找到的人。
更新 我对递归函数进行了一些更改,以始终附加到传递的变量。这是一个合适的解决方案吗?
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 返回扁平列表。
标签: python