Ошибка выхода из диапазона из индекса при попытке сортировки элементов в списке - PullRequest
0 голосов
/ 19 июня 2019

При попытке отсортировать элементы списка в python, я получаю сообщение об ошибке

def sort():   

    my_list=[100,90,80,60,50]     ## Declared an  list             
    for i in range(0,len(my_list)):
        if my_list[i]>my_list[i+1]:
            temp=my_list[i]
            my_list[i]=my_list[i+1]
            my_list[i+1]=temp 

    print(my_list)

Ответы [ 3 ]

0 голосов
/ 19 июня 2019

Если вы не практикуете алгоритм, вы всегда можете

my_list.sort() #ascending
my_list.sort(reverse = True) #descending
0 голосов
/ 19 июня 2019

Итак, я сделал некоторые изменения в вашем коде. Это алгоритм сортировки выбора, и this - это то, что происходит внутри вашего алгоритма.

def sort(L):
    for i in range(len(L)):
        for j in range(i, len(L)):
            if L[j] < L[i]:
                print("Changing {} by {}".format(L[i], L[j]))
                L[i], L[j] = L[j], L[i]
        print(L)
    return L

Я поместил 2 отпечатка внутри функции, чтобы вы лучше поняли этот алгоритм.
Кроме того, в Python вам не нужно иметь временную переменную для обмена значениями, вы можете сделать это, как я.

Надеюсь, я тебе помог!

0 голосов
/ 19 июня 2019

в цикле for необходимо установить диапазон длиной -1, иначе в последней итерации [i + 1] выбрасывает индекс за пределы диапазона. Вы можете использовать это:

def sort():   
    my_list=[100,90,80,60,50]     ## Declared an  list             
    for i in range(0,len(my_list)-1):
        if my_list[i]>my_list[i+1]:
            temp=my_list[i]
            my_list[i]=my_list[i+1]
            my_list[i+1]=temp 
    print(my_list)

Ошибка может быть устранена только -1.но не знаю, какие операции ты хочешь делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...