python - 如何让我的方法返回一个列表而不是字符串?
问题描述
def preorder(self):
if self.root != None:
self._preorder(self.root)
def _preorder(self, cur_node):
lyst = []
if cur_node != None:
lyst.append(str(cur_node.data))
#print(str(cur_node.data))
lyst += self._preorder(cur_node.left_child)
lyst += self._preorder(cur_node.right_child)
return lyst
所以我有这个预购方法,它只会在终端上打印出一堆数字字符串,例如:
277
291
295
385
317
309
301
306
313
314
362
351
328
321
325
323
343
335
334
342
346
344
345
347
361
355
357
378
377
390
399
但是我希望它成为一个列表。所以我做了一个空列表,并尝试附加它,并将其扩展到递归调用。但是,这仍然返回 None。我到底在这里想念什么?
解决方案
您的_preorder
函数返回一个列表,但您的preorder
函数对它不做任何事情。
def preorder(self):
if self.root != None:
self._preorder(self.root) # nothing is done with this value
# end of function -- no return so we return None
您可以将其更改为:
def preorder(self):
return self._preorder(self.root)
现在调用者preorder
将获得一个列表作为返回值。由于通过返回一个空列表来_preorder
处理这种None
情况,因此似乎preorder
应该无条件地调用它。
推荐阅读
- linux - 如何正确设置 sed 命令
- javascript - 我想更改 html5-canvas 中图像内图像的颜色
- javascript - 当我向后端发出 POST 请求并尝试访问正文时,每个属性都会转换为字符串,包括数组
- php - 我想要使用 laravel 通知日期将在下周到期
- python - 安全索引字典树
- spring - 访问远程 mongodb 服务器
- discord - 如何在我的不和谐音乐机器人中创建搜索命令?(Discord.py 重写)
- laravel - 如何使用 VueJS、Axios 和 Laravel 正确发布包含数据和文件的表单?
- angularjs - AngularJS 组件作为 Angular 8 中的组件
- twilio - 获取摘要和指标时从 Twilio Voice Insights API 获取 404