鱼C论坛

 找回密码
 立即注册
查看: 290|回复: 6

[已解决]python 的列表

[复制链接]
发表于 2025-5-5 10:08:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在鱼C的新版python中讲列表的第一节中,提到的一个例子,'Pen',"Book".
'Fishc","Apple","banana"
""这个sonted(t,key=len)这个呢比较的是长度,但是Fishc和Apple长度一样啊?为什么Fishc排在Apple前面?
最佳答案
2025-5-5 21:26:21
为了保证排序的稳定性(排序前后元素的相对位置的稳定),sort(t, key=len),排序的关键字是元素(字符串)的长度,当遇到两个字符串的长度相同的时候,保持这两个字符串原来的先后顺序。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-5-5 10:09:24 | 显示全部楼层
关于列表排序时相同长度元素的排列顺序解释

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

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

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

  1. t = ['Pen', 'Book', 'Fishc', 'Apple', 'banana']
复制代码


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


3. 验证代码

  1. t = ['Fishc', 'Apple', 'banana']
  2. print(sorted(t, key=len))  # 输出:['Apple', 'Fishc', 'banana']
复制代码

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-5 10:17:41 | 显示全部楼层
这叫排序算法的稳定性

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

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

求最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-5 10:44:43 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-5 21:26:21 | 显示全部楼层    本楼为最佳答案   
为了保证排序的稳定性(排序前后元素的相对位置的稳定),sort(t, key=len),排序的关键字是元素(字符串)的长度,当遇到两个字符串的长度相同的时候,保持这两个字符串原来的先后顺序。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-8 09:15:42 | 显示全部楼层
player-none 发表于 2025-5-5 10:17
这叫排序算法的稳定性。

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

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-8 17:18:06 | 显示全部楼层

请给3#设最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-4 03:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表