首页 > 解决方案 > 如何返回而不是打印

问题描述

我从使用中得到了想要的结果,print()但是在使用return. 我怎样才能将其更改为return?当我这样做时,它只返回key, value我想要在 BST 中拥有四个的第一个。

 def inOrder(self, aNode):
       if aNode:
        self.inOrder (aNode.leftChild)
        print (aNode.key + ' ' + aNode.payload +'\n')
        self.inOrder (aNode.rightChild)

我正在寻找的结果是有四个键,后跟它们的值。

标签: python-3.xcalling-convention

解决方案


要完全按照您的意愿行事,您需要使用yield关键字(此处yield from为语句的详细信息)

 def inOrder(self, aNode):
       if aNode:
        yield from self.inOrder(aNode.leftChild)
        yield (aNode.key, aNode.payload)
        yield from self.inOrder(aNode.rightChild)

它将返回一个生成器,您可以使用“扩展”它list(inOrder(...))

你也可以有一个专门的参数,你会在你经历时更新:

 def inOrder(self, aNode, res=[]):
       if aNode:
        self.inOrder(aNode.leftChild, res)
        res.append((aNode.key, aNode.payload))
        self.inOrder(aNode.rightChild, res)

这将提供类似的结果。


推荐阅读