我是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)。你们中的任何人可以帮助我吗?
答案 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)