尝试实现递归反转子列表的函数。
我有代码以递归方式反转列表:
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]。有任何想法吗?谢谢!
答案 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]]