我想为列表创建一个反向方法.我知道python中已经有这样的方法,但我想从头开始尝试.这就是我所拥有的,它似乎对我有意义,但它只是以相同的顺序返回列表.我的理解是列表是可变的,我可以在循环中重新分配值.
def reverse(data_list):
length = len(data_list)
s = length
for item in data_list:
s = s - 1
data_list[s] = item
return data_list
Run Code Online (Sandbox Code Playgroud)
Blu*_*eft 14
def reverse(data_list):
return data_list[::-1]
Run Code Online (Sandbox Code Playgroud)
>> reverse([1,2,3,4,5]) [5, 4, 3, 2, 1]
您正在更改要迭代的列表(data_list),因为该列表不起作用,请尝试执行以下操作:
def reverse(data_list):
length = len(data_list)
s = length
new_list = [None]*length
for item in data_list:
s = s - 1
new_list[s] = item
return new_list
Run Code Online (Sandbox Code Playgroud)
到列表中途时,您已经交换了所有项目;当您继续进行下半部分时,您将全部交换回原来的位置。
试一试
def reverse(lst):
i = 0 # first item
j = len(lst)-1 # last item
while i<j:
lst[i],lst[j] = lst[j],lst[i]
i += 1
j -= 1
return lst
Run Code Online (Sandbox Code Playgroud)
有两种使用方法:
a = [1,2,3,4,5]
reverse(a) # in-place
print a # -> [5,4,3,2,1]
b = reverse(a[:]) # return the result of reversing a copy of a
print a # -> [5,4,3,2,1]
print b # -> [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)