如何给列表排序
- 在上方文本框中粘贴列表,每行一项。
- 选择排序方式并勾选需要的选项。每次输入或更改设置,排序结果框都会立即更新。
- 点击复制结果或下载 .txt。选择随机时,每点一次重新排序都会重新打乱。
六种排序方式
- A → Z 和 Z → A – 按真实语言的词典规则而不是字符编码进行升序或降序排列(详见下文)。在中文页面中,汉字按拼音顺序排列。
- 最短的在前和最长的在前 – 按每行的字符数(含空格)排序,长度相同的行再按字母或拼音顺序排列。
- 反转当前顺序 – 不排序,只把列表上下颠倒,让最后一行排到最前面。适合把按时间先后记录的日志改成最新的在前。
- 随机(打乱) – 使用浏览器的密码学安全随机数生成器,以 Fisher–Yates 洗牌算法打乱各行。
选项
- 数字按自然顺序(默认开启)– 把连续的数字当作数值比较,因此“项目 2”排在“项目 10”前面。关闭后会逐个字符比较,由于“1”小于“2”,“项目 10”反而排在前面。
- 区分大小写(关闭)– 关闭时“apple”和“Apple”被视为相同,并保持它们在原列表中的顺序;开启后大写在前:APPLE、Apple、apple。
- 删除重复项(关闭)– 相同的行只保留第一次出现的那一行。它遵循区分大小写的设置,关闭区分大小写时,“Apple”和“apple”也算重复。
- 删除空行(开启)– 去掉空行和只含空格的行。
示例
把香蕉、苹果、项目 10、项目 2、樱桃每行一个输入后的结果:
| 设置 | 结果 |
|---|---|
| A → Z,自然顺序开启 | 苹果、香蕉、项目 2、项目 10、樱桃 |
| A → Z,自然顺序关闭 | 苹果、香蕉、项目 10、项目 2、樱桃 |
| Z → A | 樱桃、项目 10、项目 2、香蕉、苹果 |
| 最长的在前 | 项目 10、项目 2、苹果、香蕉、樱桃 |
| 反转当前顺序 | 樱桃、项目 2、项目 10、苹果、香蕉 |
苹果(píng)、香蕉(xiāng)、项目(xiàng)、樱桃(yīng)正是按拼音排列的。人名也一样:张三、李四、王五、赵六、阿明会排成阿明、李四、王五、张三、赵六。文件名则说明了自然顺序的必要性:file10.txt、file2.txt、file1.txt、File3.txt 开启时排成 file1.txt、file2.txt、File3.txt、file10.txt,关闭时则是逐字符比较的结果 file1.txt、file10.txt、file2.txt、File3.txt。
和简单的“按字符编码排序”有什么不同
很多编程工具按字符编码排序,结果是所有大写字母都排在所有小写字母前面(“Zebra”在“apple”之前),带重音的字母被排到最后。本工具使用浏览器内置的、基于 Unicode 排序算法的规则:é 排在 e 旁边,大小写字母混在一起排列,数字排在字母前面。中文页面使用中文规则,顺序是数字、汉字、拉丁字母,汉字按拼音排列;如果按 Unicode 编码排序,汉字的顺序与读音毫无关系。
数字排序:自然顺序的局限
自然顺序会把一串连续数字当作一个整数来比较,因此适合整数和“第9章”这样的名称。但它不理解小数点和负号:
- 10、9.5、1.25、1.5、2 会排成 1.5、1.25、2、9.5、10,因为小数点后的数字被读成了 5 和 25。
- -3、-10、5、-1 会排成 -1、-3、-10、5,因为负号不被视为数字的一部分。
小数只要统一小数位数就能解决:1.25、1.50、2.00、9.50、10.00 可以正确排序。如果含有负数,或需要严格按数值排序,用电子表格会更可靠。
技巧
- 各行按原样比较,所以以空格开头的行会排在其他行前面。首尾夹杂空格的列表,请先用删除重复行整理:它会去掉每行首尾的空格,同时删除重复的行。
- 用文本对比比较两个列表之前,先把两边都排好序,新增和缺少的项目会一目了然。
- 排序时从每行第一个字符开始比较整行内容,无法按行中间的某一列(例如 CSV 的第二列)排序,这类操作请在电子表格中完成。
常见问题
用来抽签够公平吗?
它使用标准的洗牌算法和密码学安全的随机数,实际上可以认为每种顺序出现的概率相同。如果要从名单中抽出一位或多位中奖者,随机抽名更方便。
被视为相同的行会保持原来的顺序吗?
会。这是稳定排序,例如关闭区分大小写时的“apple”和“Apple”,被视为相同的行会保持它们在原列表中的先后顺序。
为什么以数字开头的行排在最前面?
按照标准的排序规则,数字排在文字之前,标点和空格又排在数字之前。这和大多数语言的词典以及文件管理器的做法一致。
很长的列表也能排序吗?
能。几万行的列表几乎瞬间就能排好,真正的限制只有设备的内存。