Python函数实现列表反转
列表反转是指将一个列表的元素顺序颠倒,例如将[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("测试通过!")
