簡體   English   中英

排序方法返回不正確的 output

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM