为什么我的排序功能(PYTHON)出错?

时间:2014-03-17 00:54:32

标签: python sorting

我是python编程的初学者,我一直在努力解决编写一个排序函数,该函数可以将给定列表的数量从最小到最大(我已经知道关于“排序”。功能)。我写了一个,我不断得到:“IndexError:列表索引超出范围”

a = [5,3,1,2,4]

s = 0
n = [len(a)-1]
sn = a[0]
i = 0
b = []

for item in a:
    while i < n:
        if sn > a[i+1]:
            sn = a[i+1]
    i = i + 1
    b.append(sn)
    a.remove(sn)
    n = n-1
    i = 0
    sn = a[0]

print(b)

我的方法是将列表的第一个(第0个)项与其余项进行比较并确定它是否是最小数,然后将其添加到新列表中(b)并重新定义第一个列表(a)作为新的列表(b)。你们中的任何人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

尝试缩进i = i + 1,因为否则会有一个无限循环并且更改a中的项目到范围内的项目(len(a)):因为当你从a中删除项目时,a会变小,所以它不会在整个列表上运行。您还需要在从a中删除项目之前将sn = a [0]移动到,否则当您尝试获取列表的第一项时,列表在最后一次迭代时将为空。

编辑:

while i < n:
        if sn > a[i+1]:
            sn = a[i+1]
        i = i + 1

可以替换为

sn=max(a)