sorting - 为什么用数字对字符串进行排序与仅对数字进行排序有不同的结果?
问题描述
这是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'
。
如果您想要一个反映数字比较的结果,您需要将值作为数字进行比较,而不是作为字符串。
推荐阅读
- c# - 如何重用 XAML 块并定义类似函数的块?
- tensorflow.js - 张量的标量乘法
- reactjs - 离子反应应用程序在第一次状态更改后显示空白页面
- python - 是否可以将 Blender 中呈现的数据可视化集成到 Jupyter Notebook 中?
- python - corrcoef 将 nan 作为输出
- mysql - 如何访问对应于mysql中另一个表的两个不同列的表的一列?
- amazon-web-services - 更新 S3 存储桶中的文件。仍然收到'304 - 未修改'
- iis - IIS 在 DevOps 中更改物理目录
- javascript - 将本地文件从 React 发布到 Express 导致 404 错误
- google-analytics - 多个 GA 代码是否会将网站跳出率提高到 100%?