提问人:ajith3530 提问时间:7/12/2021 最后编辑:Charles Duffyajith3530 更新时间:7/12/2021 访问量:1407
为什么对带有数字的字符串进行排序的结果与仅对数字进行排序的结果不同?
Why does sorting strings with numbers have a different result than just sorting the numbers?
问:
这是 python 输出:
->排序([“0”, “-1”, “1”, “-100”, “100”])
-> ['-1', '-100', '0', '1', '100']
我的期望是 ['-100', '-1', '0', '1', '100'],因为数字刻度为 -1 > -100。 为什么 -100 在这里被视为比 -1 更高的值?我只是想理解其中的逻辑。
答:
3赞
Charles Duffy
#1
对字符串进行排序通常是在所有语言中完成的,而不仅仅是 Python,使用相同的算法,一种逐个字符操作的算法。
- 从每个输入字符串的第一个字符开始。
- 左边的第一个字符比右边的字符大吗?然后确定第一个字符串作为一个整体更大。
- 右边的第一个字符比左边的字符大吗?然后确定第二个字符串作为一个整体更大。
- 两个角色是一样的吗?那么我们还没有完成。
- 转到下一个字符并重复。
- 两边没有下一个字符吗?那么绳子最短的一侧就更小了。
按照该算法,小于 因为小于 。'10'
'2'
'1'
'2'
如果想要反映数值比较的结果,则需要将值作为数字进行比较,而不是字符串。
评论
0赞
ajith3530
7/12/2021
感谢您的详细澄清,这是我遇到的一般编码问题之一。我试图理解这种行为背后的逻辑,因为如果你对字符串比较一无所知,推理就不直观了。
评论
sorted(map(int, ["0", "-1", "1", "-100", "100"]))
[-100, -1, 0, 1, 100]
aaaaa
b
11111
2