在python中使用递归来反转列表?

2024-10-04 11:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,有没有其他方法可以使用递归来反转列表?这是我的代码:

revList=[]
def reverseList(listXS):
    if(len(listXS)==1):
        revList.append(listXS[0])
    else:
        current=  listXS.pop()
        revList.append(current)
        reverseList(listXS)
    return revList

testList= ["mouse","dog","cat"]
print(testList)
print(reverseList(testList))

Tags: 方法代码列表lenifdefcurrentpop
3条回答

如果您需要另一种递归方法:

def reverseList(listXS):
    return [] if not listXS else [listXS.pop()] + reverseList(listXS)

或切片:

^{pr2}$

如果您需要就地解决方案:

def reverseList(listXS, i=1):
    if i == len(listXS) - 1:
        return
    listXS[i-1], listXS[-i] = listXS[-i], listXS[i-1]
    reverseList(listXS, i+1)

颠倒原始列表:

In [22]: l = [1, 2, 3, 4,5]  
In [23]: reverseList(l)    
In [24]: l
Out[24]: [5, 4, 3, 2, 1]    
In [25]: l = [1, 2, 3, 4]    
In [26]: reverseList(l)    
In [27]: l
Out[27]: [4, 3, 2, 1]

这里有a function

>>> [1,2,3,4,5].reverse()
[5,4,3,2,1]

如果你想使用递归,你可以这样做,但它基本上是以不同的方式实现for循环

def rev(x,y=None):
    if y is None:
        y = []
    y.append(x.pop())
    if x:
        y = rev(x,y)
    return y

print rev([1,2,3,4,5],[])

[5, 4, 3, 2, 1]

相关问题 更多 >