利用 in 关键字使你的数据结构更友好
最近我突然想到: 在Python中,如果有一个支持使用“in”关键字的Tree对象Tree()会不会很方便呢?这样,我就可以简单地这样做: tree = Tree.from_list([1,2,3,4,5]) ... if val in tree: ... 好消息是,实际上我们是可以做到的!为了使类Tree与“in”方法兼容,我们需要实现__iter__方法。这个方法应该递归返回其子节点,使我们能够遍历整个树。 class Tree: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def __iter__(self): if self.left: # 可以使用“yield from”来委托迭代给另一个可迭代对象。 yield from self.left yield self.val if self.right: yield from self.right 现在,您可以执行条件检查了! tree = Tree(6, left=Tree(4, left=Tree(2), right=Tree(5)), right=Tree(8)) if 5 in tree: print("Yes!") 如果不用 in, 我们可能需要做一个find方法: if tree.find(5): print("Yes!") 我相信无论哪种方法都很好看懂。使用“in”关键字的好处在于它利用了内置的关键字。