如何在python中实现递归的reverseSubList函数?

时间:2015-12-09 03:54:22

标签: python list recursion

尝试实现递归反转子列表的函数。

我有代码以递归方式反转列表:

def recur_reverse(list1):
    if len(list1) <= 1:
        return list1

    return recur_reverse(list1[1:]) + [list1[0]]

使用步骤值和初始位置/索引创建新列表的代码:

def newList(list1, step, posn):
    return list1[posn::step]

我尝试将这两者结合在一起,但我似乎无法让它正常工作。

重申,我希望能够有一个列表说[1,2,3,4,5,6],提供一个步骤值说2,初始位置说1.所以子列表将是[在反转它之后,子列表将是[6,4,2]。

到目前为止,我所拥有的是以下内容:

def revSubList(list1, step, posn):
    if len(list1) <= 1:
        return list1

    return revSubList(list1[posn-1::step-1], step, posn) + [list1[0]]

当我打印这个结果列表时,它是[6,1],但我需要[6,4,2]。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

你的指数是错的。为什么递减step?解压缩L[pos]后,您需要以递归方式处理L[pos+step:],但在该切片中,初始位置应为0

def revSubList(L, step, pos):
    if len(L) <= 1:
        return L
    return revSubList(L[pos+step:], step, 0) + [L[pos]]