为什么用数字对字符串进行排序与仅对数字进行排序有不同的结果?
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 更高的值?我只是想了解其中的逻辑。
字符串排序通常是在所有语言中完成的,而不仅仅是 Python——使用相同的算法,一种逐字符操作的算法。
- 从每个输入字符串的第一个字符开始。
- 左边的第一个字符比右边的大吗?然后决定第一个字符串作为一个整体更大。
- 右边的第一个字符比左边的大吗?然后判断第二个字符串整体更大。
- 两个字符是否相同?那我们还没完呢
- 移至下一个字符并重复。
- 是否没有 两侧之一的下一个字符?那么绳子最短的一边更小
按照该算法,'10'
小于 '2'
因为 '1'
小于 '2'
。
如果您想要一个反映数字比较的结果,您需要将值作为数字而不是字符串进行比较。
这是 python 输出:
-> 已排序([“0”、“-1”、“1”、“-100”、“100”])
-> ['-1', '-100', '0', '1', '100']
我的预期是 ['-100', '-1', '0', '1', '100'],因为数字量表中 -1 > -100。 为什么这里 -100 被视为比 -1 更高的值?我只是想了解其中的逻辑。
字符串排序通常是在所有语言中完成的,而不仅仅是 Python——使用相同的算法,一种逐字符操作的算法。
- 从每个输入字符串的第一个字符开始。
- 左边的第一个字符比右边的大吗?然后决定第一个字符串作为一个整体更大。
- 右边的第一个字符比左边的大吗?然后判断第二个字符串整体更大。
- 两个字符是否相同?那我们还没完呢
- 移至下一个字符并重复。
- 是否没有 两侧之一的下一个字符?那么绳子最短的一边更小
按照该算法,'10'
小于 '2'
因为 '1'
小于 '2'
。
如果您想要一个反映数字比较的结果,您需要将值作为数字而不是字符串进行比较。