首页 > 解决方案 > 解释这个 python while 循环如何返回列表中元素的相反顺序

问题描述

有人可以向我解释这个 python 循环如何输出列表中元素的相反顺序吗?这是学校作业的一部分,我不太明白它是如何工作的。

我知道这是获取列表反向顺序的一种更困难的方法,但是我们不允许使用反向功能,而且我似乎无法让列表拼接通过自动评分器。

def reverse_list(stuff):
    '''Function that reverses the order of elements in a list'''
    i = 0
    n = len(stuff)-1
    while i<n:
        temp = stuff[i]
        stuff[i] = stuff[n]
        stuff[n] = temp
        i+=1
        n-=1
#test
stuff = [1,2,3,4]
reverse_list(stuff)
print(list) #Output [4,3,2,1]

标签: pythonloopswhile-loop

解决方案


使用更好的名称,以及您可能更容易理解的印刷品

def reverse_list(stuff):
    begin = 0
    end = len(stuff) - 1
    while begin < end:
        temp = stuff[begin]
        stuff[begin] = stuff[end]
        stuff[end] = temp
        begin += 1
        end -= 1
        print(stuff)

对于输入[1, 2, 3, 4, 5, 6, 7, 8, 9],您将看到

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 2, 3, 4, 5, 6, 7, 8, 1] # swap 1 and 9
[9, 8, 3, 4, 5, 6, 7, 2, 1] # swap 2 and 8
[9, 8, 7, 4, 5, 6, 3, 2, 1] # swap 3 and 7
[9, 8, 7, 6, 5, 4, 3, 2, 1] # swap 4 and 6

方法是,获取两个索引

  • 一个从头开始并递增:begin
  • 一个从末尾开始并递减:end

每次交换时,然后使用第三个变量temp,然后 2 乘 2 你将全部交换,直到你到达中间


推荐阅读