python-3.x - 如何返回而不是打印
问题描述
我从使用中得到了想要的结果,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)
我正在寻找的结果是有四个键,后跟它们的值。
解决方案
要完全按照您的意愿行事,您需要使用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)
这将提供类似的结果。
推荐阅读
- swift - SwiftUI -> 线程 1:致命错误:未找到 ModelData 类型的 ObservableObject
- javascript - 在导入的函数之间使用范围变量的最佳实践
- python - 通过 ms gragh core api python 发送电子邮件
- python - 必须编写一个程序来平均所有数字。并苦苦挣扎从哪里开始
- locust - 如何在 Locust 中模拟用户帐户衰减?
- google-chrome-devtools - Chrome DevTools:有没有办法使用网络 API 计算排队时间?
- mysql - 如何防止 gorm 忽略 .Updates() 子句中“UpdatedAt”字段的值?
- r - slackr_setup() 回归:if (nrow(chan) == 0) { 中的错误:参数长度为零
- html - localhost 仅在我的计算机中有效,在我的本地网络中无效
- python - 如果模式具有相同的计数值 Python,则接受字符串