Skip to main content
 首页 » 编程设计

python之反转列表的简单函数

2025年05月04日17jiqing9006

使用 + 运算符可以正常工作。如果我尝试使用 append 方法进行编写,它会返回 None。

revFromEnd2 能否使用append 方法反转列表?

def revFromEnd(L): 
    if len(L)==1: 
        return L 
    else: 
        return [L[-1]] + revFromEnd(L[:-1]) 
 
def revFromEnd2(L): 
    if len(L)==1: 
        return L 
    else: 
        return [L[-1]].append(revFromEnd2(L[:-1])) 
 
print(revFromEnd([1,2,3,4,5])) 
print() 
print(revFromEnd2([1,2,3,4,5])) 

请您参考如下方法:

有一个内置函数reversed:

>>> l = [1, 2, 3] 
>>> list(reversed(l)) 
[3, 2, 1] 

你也可以使用切片(它们的语法是 [start:end:step],所以如果你为 step 定义一个负值,它会在相反的方向生成一个切片):

>>> l = [1, 2, 3] 
>>> l[::-1] 
[3, 2, 1] 

UPD:是的,递归很棒,但由于您使用的是 Python 和 it doesn't optimize tail recursion , 最好使用更明显的方法:)