首页 > 解决方案 > 为什么用数字对字符串进行排序与​​仅对数字进行排序有不同的结果?

问题描述

这是python输出:

-> 排序([“0”,“-1”,“1”,“-100”,“100”])

-> ['-1', '-100', '0', '1', '100']

我的期望是 ['-100', '-1', '0', '1', '100'],因为 -1 > -100 在数字范围内。为什么 -100 在这里被视为比 -1 更高的值?我只是想了解其中的逻辑。

标签: sortinglanguage-agnostic

解决方案


对字符串进行排序通常是在所有语言中完成的,而不仅仅是 Python ——使用相同的算法,逐个字符地操作。

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

遵循该算法,'10'小于,'2'因为'1'小于'2'

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


推荐阅读