为什么sort没有按数字顺序返回这个列表



当我试图简单地对一些数字进行排序时,我在Python中的这段代码遇到了以下问题,下面是代码。

array = input().split(" ")
between_numbers = " <= ".join(sorted(array))
print(between_numbers)

有了这个给定的输入:

-100 500 36724 -673 874 37 36 324 627 82 76537 -772 -936 2467 2365 -3763

我得到了这个:

-100 <= -3763 <= -673 <= -772 <= -936 <= 2365 <= 2467 <= 324 <= 36 <= 36724 <= 37 <= 500 <= 627 <= 76537 <= 82 <= 874

而不是这个:

-3763 <= -936 <= -772 <= -673 <= -100 <= 36 <= 37 <= 82 <= 324 <= 500 <= 627 <= 874 <= 2365 <= 2467 <= 36724 <= 76537

有人能告诉我为什么会这样以及如何修复吗?

split为您提供了一个字符串列表。默认情况下,字符串按字典进行比较:

"a" < "aardvark" < "b"
"1" < "10" < "2"

如果您有一个数字列表,或者如果您将排序键指定为int转换,sorted将执行您想要的操作。因此,

array = [int(x) for x in input().split(" ")]

between_numbers = " <= ".join(sorted(array, key=int))

将每个数字转换为Integer,然后对进行排序

array = [int(i) for i in input.split(' ')]

你会得到根据数字而不是字符串排序的列表(这种情况发生在你的情况下(

x=np.array([2,1,4,3,5](np.sort(x(你可以使用这个

最新更新