Объясните, как этот цикл Python while возвращает обратный порядок элементов в списке - PullRequest
0 голосов
/ 09 ноября 2019

Может ли кто-нибудь объяснить мне, как этот цикл 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]

1 Ответ

1 голос
/ 09 ноября 2019

Используя лучшие имена и отпечаток, который вы можете лучше понять

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 вы будете менять местами все, пока не достигнете середины

...