首页 > 解决方案 > 如何让我的方法返回一个列表而不是字符串?

问题描述

    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。我到底在这里想念什么?

标签: python

解决方案


您的_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应该无条件地调用它。


推荐阅读