尝试对列表中的元素进行排序时出现索引超出范围错误

时间:2019-06-19 09:35:44

标签: python sorting

尝试在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 :(得分:0)

如果您不练习算法,则可以随时

my_list.sort() #ascending
my_list.sort(reverse = True) #descending

答案 1 :(得分:0)

因此,我对您的代码进行了一些更改。这是一种选择排序算法,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中,您不需要临时变量即可交换值,您可以像我一样进行操作。

希望我能帮助您!

答案 2 :(得分:-1)

在for循环中必须将范围设置为lenth -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解决,但不知道您要执行什么操作。