Python 如何以给定值反转列表?
我正在尝试设计一个代码,它将在给定值的索引处反转给定列表。列表中超出该值的其余部分将按正确顺序打印,但我似乎无法完成它 这是我目前掌握的代码Python 如何以给定值反转列表?,python,list,python-3.x,python-3.5,Python,List,Python 3.x,Python 3.5,我正在尝试设计一个代码,它将在给定值的索引处反转给定列表。列表中超出该值的其余部分将按正确顺序打印,但我似乎无法完成它 这是我目前掌握的代码 def reverse(my_list, value): lst = [] lst2 = [] for x in range(my_list[0], my_list[value]): x = my_list[x] lst2.append(x) for i in range(len(lst
def reverse(my_list, value):
lst = []
lst2 = []
for x in range(my_list[0], my_list[value]):
x = my_list[x]
lst2.append(x)
for i in range(len(lst2)-1, -1, -1):
x = lst2[i]
lst.append(x)
for x in range(my_list[value], len(my_list)):
x = my_list[x]
lst.append(x)
print(lst)
如果输入是这个
reverse([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5)
[6, 5, 4, 3, 2, 7, 8, 9, 10]
输出应该是
[5, 4, 3, 2, 1, 6, 7, 8, 9, 10]
但结果却是这样
reverse([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5)
[6, 5, 4, 3, 2, 7, 8, 9, 10]
有人能帮我确定如何获得所需的输出吗?使用切片将更容易实现:
def reverse(my_list, value):
return my_list[:value][::-1] + my_list[value::]
第一个和第三个循环中的索引是错误的,您必须遍历索引而不是值。像这样写:
def reverse(my_list, value):
lst = []
lst2 = []
for x in range(0, value):
x = my_list[x]
lst2.append(x)
for i in range(len(lst2)-1, -1, -1):
x = lst2[i]
lst.append(x)
for x in range(value, len(my_list)):
x = my_list[x]
lst.append(x)
print(lst)
reverse([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5)
输出:[5、4、3、2、1、6、7、8、9、10]不需要双“切片”,因此创建两个临时列表-当然,它不会对小列表产生太大影响,但它肯定会显示大列表和任意切片的速度和内存使用情况<代码>我的列表[value-1::-1]+我的列表[value:]只要少创建一个列表就可以正常工作。