是否有另一种方法可以使用递归在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))
答案 0 :(得分:1)
如果您想要一种替代的递归方法:
def reverseList(listXS):
return [] if not listXS else [listXS.pop()] + reverseList(listXS)
或切片:
def reverseList(listXS):
return [] if not listXS else listXS[-1:] + reverseList(listXS[:-1])
如果您想要一个就地解决方案:
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]
答案 1 :(得分:1)
这有a function:
>>> [1,2,3,4,5].reverse()
[5,4,3,2,1]
答案 2 :(得分:0)
如果你想使用递归,你可以这样做但它基本上以不同的方式实现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]
答案 3 :(得分:0)
def rev_list(l):
if not l:
return []
else:
return l[-1:] + rev_list(l[:-1])
print(rev_list([1,2,3,4,5]))
[5, 4, 3, 2, 1]
答案 4 :(得分:-1)
简写:: - 1适用于反转数组。它也适用于numpy数组以反转任意维度。
内置方法通常(通常非常)优于手动实现。
>>> testList= ["mouse","dog","cat"]
>>> testList[::-1]
['cat', 'dog', 'mouse']