我使用以下函数以按递增顺序对列表进行排序.但是,虽然我的函数适用于以下列表:[1,5,6,9,3]或者[56,43,16,97,45],它不适用于表单的列表:[20,10,1,3,50].
在这种情况下,计算机似乎认为3> 20和3> 10和3在我得到的"排序"列表中就在50(倒数第二个)之前结束.更准确地说,我得到的结果是:[1,10,20,3,50].
这是我的代码:
def function_sort(L):
for j in range(len(L)):
min=j
for i in range(j+1,len(L)):
if L[i]<L[min]:
min = i
if(min != j):
L[j],L[min] = L[min],L[j]
print L
return L
Run Code Online (Sandbox Code Playgroud)
谁能请你解释一下发生了什么?
听起来你的列表由字符串而不是整数组成,你最终得到的元素按字典顺序排序.
举例来说,请考虑以下事项:
>>> 10 < 2
False
>>> '10' < '2'
True
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请在排序前将元素转换为整数:
L = map(int, L)
Run Code Online (Sandbox Code Playgroud)
PS我建议不要使用它min作为变量名,因为它会影响内置函数min().
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |