欢迎访问宙启技术站
智能推送

Python函数实现列表反转

发布时间:2023-05-30 21:59:54

列表反转是指将一个列表的元素顺序颠倒,例如将[1,2,3,4,5]反转为[5,4,3,2,1]。Python提供了内置函数reversed()可以实现列表反转,但我们也可以通过函数的方式来实现。

实现思路

列表反转的实现思路有很多种,常用的有如下几种:

1. 切片

利用切片操作[::-1]可以将列表反转,具体实现代码如下:

def reverse_list1(lst):

    return lst[::-1]

2. 循环逆序

循环逆序,将列表的第1个元素和最后1个元素交换,第2个元素和倒数第2个元素交换,以此类推,代码实现如下:

def reverse_list2(lst):

    n = len(lst)

    for i in range(n//2):

        lst[i], lst[n-i-1] = lst[n-i-1], lst[i]

    return lst

3. 递归

将列表的第1个元素和最后1个元素交换,将除开第1个和最后1个元素的子列表也反转,然后将两个列表合并成一个即可。具体实现代码如下:

def reverse_list3(lst):

    if len(lst) <= 1:

        return lst

    else:

        return reverse_list3(lst[1:]) + [lst[0]]

函数实现

我们将对上述实现思路进行代码封装,实现一个将列表反转的函数reverse_list,代码如下:

def reverse_list(lst):

    n = len(lst)

    if n <= 1:

        return lst

    else:

        return reverse_list(lst[1:]) + [lst[0]]

测试

为了验证reverse_list函数的正确性,我们编写了如下测试用例:

assert reverse_list([1,2,3,4,5]) == [5,4,3,2,1]

assert reverse_list([1]) == [1]

assert reverse_list([]) == []

说明:通过assert断言来判断函数输出是否符合预期。

完整代码

将上述三种实现思路和reverse_list函数整合成一个完整的代码文件如下: 

# 方法1:利用切片操作[::-1]

def reverse_list1(lst):

    return lst[::-1]

# 方法2:循环逆序

def reverse_list2(lst):

    n = len(lst)

    for i in range(n//2):

        lst[i], lst[n-i-1] = lst[n-i-1], lst[i]

    return lst

# 方法3:递归

def reverse_list3(lst):

    if len(lst) <= 1:

        return lst

    else:

        return reverse_list3(lst[1:]) + [lst[0]]

# 统一封装成一个函数

def reverse_list(lst):

    n = len(lst)

    if n <= 1:

        return lst

    else:

        return reverse_list(lst[1:]) + [lst[0]]

# 测试

assert reverse_list([1,2,3,4,5]) == [5,4,3,2,1]

assert reverse_list([1]) == [1]

assert reverse_list([]) == []

print("测试通过!")