使用递归反转列表不会给出预期的输出

时间:2015-05-24 12:29:59

标签: python list recursion

我想在python中使用递归来反转列表。我成功了,但输出并不是我想要的。试图找出我出错的地方。

def revlist(ls):
    newlist = []
    n = len(ls)
    if n == 1:
        return ls[-1]
    else:
        return ls[-1],revlist(ls[:-1])

这是我的输出。

revlist([1,2,3,4])
(4, (3, (2, 1)))

我真正希望得到的是:

revlist([1,2,3,4])
(4,3,2,1)

1 个答案:

答案 0 :(得分:1)

你好了。

def revlist(ls):
    newlist = []
    n = len(ls)
    if n == 1:
        return [ls[-1]]
    else:
        return [ls[-1]] + revlist(ls[:-1])

或清理:

def revlist(ls):
    if len(ls) < 1:
        return []
    else:
        return [ls[-1]] + revlist(ls[:-1])

基本上,您需要始终从函数返回list,并适当地附加递归调用。