xiaoxiongweini 发表于 2025-5-5 10:08:43

python 的列表

在鱼C的新版python中讲列表的第一节中,提到的一个例子,'Pen',"Book".
'Fishc","Apple","banana"
""这个sonted(t,key=len)这个呢比较的是长度,但是Fishc和Apple长度一样啊?为什么Fishc排在Apple前面?

FishC 发表于 2025-5-5 10:09:24

关于列表排序时相同长度元素的排列顺序解释

当使用 sorted(t, key=len) 进行排序时:

1. 核心规则:当两个元素的 len() 返回值相同时,sorted() 会保留它们在原始列表中的相对顺序(稳定排序特性)

2. 你的例子分析:
假设原始列表为:

t = ['Pen', 'Book', 'Fishc', 'Apple', 'banana']


排序过程:

[*]Pen (3) → Book (4) → Fishc (5) → Apple (5) → banana (6)
[*]Fishc 和 Apple 长度都是 5
[*]因为 Fishc 在原列表中出现在 Apple 之前,所以排序后保持这个顺序


3. 验证代码:

t = ['Fishc', 'Apple', 'banana']
print(sorted(t, key=len))# 输出:['Apple', 'Fishc', 'banana']

(注意:当长度完全相同时才会保持原序,此例仅作演示)

这个特性在文档中称为 "stable sort",是 Python 排序算法的重要特性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

player-none 发表于 2025-5-5 10:17:41

这叫排序算法的稳定性。

如果两个元素调用 key 方法(此处为计算长度)后值一样,稳定性好的排序函数会保留它们的原顺序。

sorted 就是这样一种函数,它没有打乱,保留了 FishC 和 Apple 的原顺序

求最佳

tommyyu 发表于 2025-5-5 10:44:43

同上。详见 https://www.zhihu.com/question/36280272 https://blog.csdn.net/yangzhongblog/article/details/8184707

鱼师父 发表于 2025-5-5 21:26:21

为了保证排序的稳定性(排序前后元素的相对位置的稳定),sort(t, key=len),排序的关键字是元素(字符串)的长度,当遇到两个字符串的长度相同的时候,保持这两个字符串原来的先后顺序。

xiaoxiongweini 发表于 2025-5-8 09:15:42

player-none 发表于 2025-5-5 10:17
这叫排序算法的稳定性。

如果两个元素调用 key 方法(此处为计算长度)后值一样,稳定性好的排序函数会 ...

谢谢

player-none 发表于 2025-5-8 17:18:06

xiaoxiongweini 发表于 2025-5-8 09:15
谢谢

请给3#设最佳答案
页: [1]
查看完整版本: python 的列表