今天我们来聊聊Python里最常用的功能之一——排序。你有没有遇到过这样的问题:一堆数据怎么快速排序?sort()和sorted()有什么区别?如何实现“先按总分排,再按语文成绩排”这种复杂排序?别急,今天我们就用最通俗的语言,带你彻底搞懂Python排序!
1. sort() vs sorted():谁才是排序之王?Python提供了两种排序方式:
list.sort() → 霸道总裁型,直接修改原列表,不返回新列表。
sorted() → 温柔体贴型,返回新列表,不改变原数据。
举个栗子
怎么选?
如果想保留原数据,用sorted()。
如果不关心原数据,用sort()(更快,省内存)。
2. 进阶玩法:自定义排序规则
Python的排序最强大的地方在于——你可以告诉它怎么排!
按字符串长度排序
按字典的某个值排序
3. 终极挑战:多级排序
问题:期末考试成绩出来了,要怎么排?
规则1:按总分从高到低
规则2:如果总分一样,按语文成绩从高到低
规则3:如果总分和语文都一样,按学号从小到大
Python代码:
解释:
-(x[1]+x[2]+x[3]) → 总分降序(加负号)
-x[1] → 语文降序
x[0] → 学号升序
运行结果:
4. 背后的黑科技:Timsort算法
Python的排序之所以快,是因为它用了Timsort算法(混合了归并排序和插入排序):
最优情况:O(n)(数据已经部分有序)
平均情况:O(n log n)(和快速排序一样快)
稳定排序(相同元素不会乱序)
适用场景:
小数据 → 插入排序(快)
大数据 → 归并排序(稳定)
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/13127/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取