1
如果我有一个列表,其中所有的值都是唯一的,代码运行良好。但是,如果列表中存在重复值,则在找到下一次迭代的最小值时,它会从整个列表中拉取,而不是从列表的剩余部分中拉出。选择排序的重复问题
for n in range(0,len(lst)):
a = min(lst[n:]) #minimum value within remainder of set
i = lst.index(a) #index value for minimum value within remainder of set
temp = lst[n]
lst[n] = a
lst[i] = temp
结果是这样的:
lst = [6, 8, 9, 1, 3, 4, 7, 5, 4]
[1, 8, 9, 6, 3, 4, 7, 5, 4]
[1, 3, 9, 6, 8, 4, 7, 5, 4]
[1, 3, 4, 6, 8, 9, 7, 5, 4]
[1, 3, 6, 4, 8, 9, 7, 5, 4]
[1, 3, 6, 8, 4, 9, 7, 5, 4]
[1, 3, 6, 8, 9, 4, 7, 5, 4]
[1, 3, 6, 8, 9, 7, 4, 5, 4]
[1, 3, 6, 8, 9, 7, 5, 4, 4]
[1, 3, 6, 8, 9, 7, 5, 4, 4]
我在寻找它返回此:
[1, 3, 4, 4, 5, 6, 7, 8, 9]
如果不是事实,我必须限制在列表的范围[N:]做到这一点? – user2850240
@ user2850240:不,您正在搜索所有'lst'。你可以切片和*然后*搜索; 'list [n:] .index(a)',但是.index()的第二个参数更有效率。 –