找到嵌套Python对象的自索引

时间:2016-01-20 18:00:02

标签: python list recursion tree nested

class Node:
    def __init__(self,parent = None):
        self.parent = parent
        self.children = []
    def AddNode(self):
        self.children.append(Node(self))
    def getIndex(self):
        return self.parent.children.index(self)

a = Node()
b = a.AddNode()
print b.getIndex()

在如上所述的对象树中,孩子在父母的孩子中找到其索引的最佳方式是什么?我正在使用self.parent.children.index(self),但这看起来很扭曲。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

一个人:这不太有效,因为 AddNode 不会返回任何内容。 除此之外你做的很好。只要你对索引进行按需(懒惰)检索,这就是一种直接的方法。如果你想要更直接的东西,我建议你在 AddNode 中链接孩子时存储索引。

class Node:

    def __init__(self,parent = None):
        self.parent = parent
        self.children = []
        self.child_index = None

    def AddNode(self):
        new_child = Node(self)
        self.children.append(new_child)
        new_child.child_index = self.children.index(new_child)
        return new_child

    def getIndex(self):
        return self.child_index

a = Node()
b = a.AddNode()
c = a.AddNode()
d = a.AddNode()

print d.getIndex()
print c.getIndex()
print b.getIndex()

输出( booooorrriiinnngg ):

2
1
0