在Python中返回列表

时间:2016-11-02 04:16:48

标签: python

我正在学习Python并且正在尝试一些Pythonic奇怪的东西。我无法弄清楚为什么返回时,这个函数会抛弃数据。

def foo(mylist=None):
    print "Input: {}".format(mylist)
    if mylist is None:
        mylist = list()
    if len(mylist) == 3:
        return mylist
    else:
        mylist.append(len(mylist))
        foo(mylist)

print "Output: {}".format(foo())

打印:

Input: None
Input: [0]
Input: [0, 1]
Input: [0, 1, 2]
Output: None

我猜它与指向不再存在的列表有关,但我不是在一个更简单的例子中得到它:

def simple_foo():
    to_return = [1, 2, 3]
    return to_return

print "Simple output: {}".format(simple_foo())

我甚至试过(在foo中)将我的列表深度复制到一个to_return变量中,然后返回它,但这似乎也不起作用。任何人都可以对此有所了解吗?我很感激。

1 个答案:

答案 0 :(得分:8)

你必须保持return

您的递归电话:

foo(mylist)

需要返回其返回值:

return foo(mylist)