python递归

2024-04-27 23:47:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个为python中的person类设计的类模型。当一个人是学生,可以有0,1或多个顾问,还可以有其他属性,如姓名、学校、毕业年份、所从事的分类、获得的学位等。在

我已经为类中的每个属性设置和获取方法。 例如,set_advisor(self,advisor)将advisor插入学生顾问列表中。 set_year(self,year)设置学生的毕业年份。在

同样的get_advisor(self)返回学生的advisor。等等。。在

最后,我填充对象并将其命名为people。在

如果我想得到某一年毕业的学生名单,我就写

print [people[p].name for p in people if people[p].year="YEAR"]

现在,我想写一个问题,比如……列出某一年毕业的学生,以及他们的导师的回溯,说一些“abc”。。。 eg数据集看起来像这样。。在

^{pr2}$

现在,我想编写一个递归查询,只跟踪那些1990年毕业、导师追踪到的人abc.in.公司上面的情况应该只给我a和b作为结果。在

我该怎么做。我在语法和表达查询。喜欢和我在上面提出的查询一样。 有谁能帮忙吗。在

类似地..如何为..编写查询..例如。。 让一对一组在同一年毕业的学生,他们的导师也在同一个分类上工作。在

谢谢。在


Tags: in模型self属性分类peopleyear学生
1条回答
网友
1楼 · 发布于 2024-04-27 23:47:16

可以在类上编写一个方法,方法如下:

has_advisor(self, advisor):
    if not self.advisor:
        return False
    elif advisor in self.advisor:
        return True
    else
        return self.advisor.has_advisor(advisor)

这样您就可以查询以下内容:

^{pr2}$

对于同时保存在内存中的大型数据集,这将很快变得非常昂贵。在

相关问题 更多 >