簡體   English   中英

如何返回而不是打印

[英]How to return instead of print

我通過使用print()獲得了想要的結果,但在使用return時我想要相同的結果。 我怎樣才能把它改成return 當我這樣做時,它只返回第一個key, value即我想要在 BST 中包含四個key, value

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

我正在尋找的結果是有四個鍵,后跟它們的值。

要完全按照您的意願執行操作,您需要使用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)

這將提供類似的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM