为什么用数字对字符串进行排序与​​仅对数字进行排序有不同的结果?

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——使用相同的算法,一种逐字符操作的算法。

  1. 从每个输入字符串的第一个字符开始。
    • 左边的第一个字符比右边的大吗?然后决定第一个字符串作为一个整体更大。
    • 右边的第一个字符比左边的大吗?然后判断第二个字符串整体更大。
    • 两个字符是否相同?那我们还没完呢
  2. 移至下一个字符并重复。
    • 是否没有 两侧之一的下一个字符?那么绳子最短的一边更小

按照该算法,'10' 小于 '2' 因为 '1' 小于 '2'

如果您想要一个反映数字比较的结果,您需要将值作为数字而不是字符串进行比较。