[英]sort method returning incorrect output
所以我試圖對一個數字列表進行排序,但是當我輸入一個數字列表時,例如 48 35 32 5 5 16 5 16 28 29。它不會按預期排序。
我的代碼:
def calculate():
nums = input("Enter a number list: ")
numsList = nums.split()
sortedNums = sorted(numsList)
print(sortedNums)
calculate()
因此,如果我輸入這樣的列表 48 35 32 5 5 16 5 16 28 29。它將返回
['16', '16', '28', '29', '32', '35', '48', '5', '5', '5']
代替
['5', '5', '5', '16', '16', '28', '29', '32', '35', '48']
有誰知道如何解決這一問題?
您正在對字符串而不是數字進行排序,因此如果只允許整數,則按字典順序獲取它們,只需更改
sortedNums = sorted(numsList)
至
sortedNums = sorted(numsList, key=int)
如果允許使用浮點數,請使用float
而不是int
。
在 python 中, sorted() 將返回一個排序列表,但不是您預期的方式。 它將根據 ASCII 代碼對值進行排序。 您可以看到排序發生在每個數字中的第一個代碼中,如果它們相等,則轉到下一個代碼。
您應該能夠定義自己的:
import numpy as np
def selection_sort(x):
for i in range(len(x)):
swap = i + np.argmin(x[i:])
(x[i], x[swap]) = (x[swap], x[i])
return x
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.