排序的技术

电视直播网365 ⌚ 2026-07-28 03:15:54 👤 admin 👁️ 4652 ❤️ 355
排序的技术

装饰 - 排序 - 去装饰¶

装饰 - 排序 - 去装饰 (Decorate-Sort-Undecorate) 得名于它的三个步骤:

首先,用控制排序顺序的新值装饰初始列表。

其次,排序装饰后的列表。

最后,去除装饰即得按新顺序排列的初始值的列表。

例如,用 DSU 方法按 grade 排序学生数据:

>>> decorated = [(student.grade, i, student) for i, student in enumerate(student_objects)]

>>> decorated.sort()

>>> [student for grade, i, student in decorated] # 取消装饰

[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

这个方法之所以有效是因为元组按字典顺序进行比较,先比较第一项;如果它们相同则比较第二个项目,依此类推。

不一定在所有情况下都要在装饰列表中包含索引 i ,但包含它有两个好处:

排序是稳定的——如果两个项具有相同的键,它们的顺序将保留在排序列表中。

原始项目不必具有可比性,因为装饰元组的排序最多由前两项决定。因此,例如原始列表可能包含无法直接排序的复数。

这个方法的另一个名字是 Randal L. Schwartz 在 Perl 程序员中推广的 Schwartzian transform.

既然 Python 排序提供了键函数,那么通常不需要这种技术。

相关数据

交互说明撰写指南:从规则定义到落地执行的完整手册

交互说明撰写指南:从规则定义到落地执行的完整手册

交互说明撰写指南:从规则定义到落地执行的完整手册 交互说明是产品经理连接设计与开发的 “翻译器”,它填补了原型图无法传递的细节空

09-18 天天365彩票软件官方下载3D
《繁花》中的繁花到底指的是什么?

《繁花》中的繁花到底指的是什么?

■安阳 一 有人说,电视剧《繁花》实在是“昏暗”。当下那么多电视剧,绝大多数都是明亮的,剧中演员的脸也都磨了皮、增了白,成了毫无

11-02 天天365彩票软件官方下载3D
一看就会的iconfont字体图标的使用方法

一看就会的iconfont字体图标的使用方法

我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!

08-07 mobile3656
北极光:美国科学家首次在实验室验证北极光产生原理

北极光:美国科学家首次在实验室验证北极光产生原理

北极光:美国科学家首次在实验室验证北极光产生原理图像来源,Getty Images 图像加注文字,变化莫测的北极光2021年6月11日北极光(aurora borealis

08-19 mobile3656
次神:光之觉醒戒指搭配指南

次神:光之觉醒戒指搭配指南

在次神:光之觉醒中,戒指选择至关重要!本期为大家带来现版本戒指强度排行及竞技场搭配推荐,助你打造最强阵容! 大家好,我是小光!本

02-13 mobile3656
【网络原理】——图解HTTPS如何加密(通俗简单易懂)

【网络原理】——图解HTTPS如何加密(通俗简单易懂)

为什么选择阿里云什么是云计算全球基础设施技术领先稳定可靠安全合规分析师报告产品和定价全部产品免费试用产品动态产品定价配置报价器

11-29 电视直播网365