Python-list排序方法
1.基本排序
- list.sort():在原列表上排序。
- newlist = sorted(list):生成新的排序后的列表。
例如:
rowlist = [5,2,3,1,4]
rowlist.sort()
# 结果 rowlist = [1,2,3,4,5]newlsit = sorted(rowlist)
# 结果 newlist = [1,2,3,4,5]
# 结果 rowlist = [5,2,3,1,4]
2.关键函数key
主要是用来比较的元素,它接收一个参数并返回一个用于排序的键。例如:
# 例1
rowlist = "This is a test string from Andrew".splist( )
newlist = sorted(rowlist, key=str.lower)
# 结果 newlist = ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']# 例2
student_tuples = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
new_student_tuples = sorted(student_tuples, key=lambda student: student[2])
# 结果 new_student_tuples = [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]# 例3
class Student:def __init__(self, name, grade, age):self.name = nameself.grade = gradeself.age = agedef __repr__(self):return repr((self.name, self.grade, self.age))
student_objects = [Student('john', 'A', 15), Student('jane', 'B', 12), Student('dave', 'B', 10)]
new_student_objects = sorted(student_objects, key=lambda student: student.age)
# 结果 new_student_objects = [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
3.Operator 模块函数
Operator 模块有 itemgetter() 、 attrgetter() 和 methodcaller() 函数。使用这些函数,上述示例变得更简单,更快捷:
from operator import itemgetter, attrgetternew_student_tuples = sorted(student_tuples, key=itemgetter(2))
# 结果 new_student_tuples = [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]new_student_objects = sorted(student_objects, key=attrgetter('age'))
# 结果 new_student_objects = [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Operator 模块功能允许多级排序。 例如先按 grade 排序,然后按 age 排序:
new_student_tuples = sorted(student_tuples, key=itemgetter(1,2))
# 结果 new_student_tuples = [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]new_student_objects = sorted(student_objects, key=attrgetter('grade', 'age'))
# 结果 new_student_objects = [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]# 先升序后降序
people = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
people.sort(key=lambda x : (x[0], -x[1]))
# 结果 people = [[4, 4], [5, 2], [5, 0], [6, 1], [7, 1], [7, 0]]
4.升序和降序
reverse=True:降序;
reverse=False:升序,默认。
例:
new_student_objects = sorted(student_objects, key=attrgetter('age'), reverse=True)
# 结果 new_student_objects = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
5.排序稳定性
data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]
newdata = sorted(data, key=itemgetter(0))
# 结果 newdata = [('blue', 1), ('blue', 2), ('red', 1), ('red', 2)]
# 具有相同键值的记录保留了在原始数据中的先后顺序。
6.其它
对于区域相关的排序,请使用 locale.strxfrm() 作为键函数,或者 locale.strcoll() 作为比较函数。
reverse 参数仍然保持排序稳定性。
在两个对象之间进行比较时,保证排序例程使用 lt() 。 因此,通过定义 lt() 方法,可以很容易地为类添加标准排序顺序:
Student.__lt__ = lambda self, other: self.age < other.age new_student_objects = sorted(student_objects) # 结果 new_student_objects = [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
键函数不需要直接依赖于被排序的对象,键函数还可以访问外部资源。例如,如果学生成绩存储在字典中,则可以使用它们对单独的学生姓名列表进行排序:
students = ['dave', 'john', 'jane'] newgrades = {'john': 'F', 'jane':'A', 'dave': 'C'} new_students = sorted(students, key=newgrades.__getitem__) # 结果 new_students = ['jane', 'dave', 'john']
Python-list排序方法相关推荐
- python的for语句写新的字符串_python写for循环python字符串排序方法
一般情况下,python中对一个字符串排序相当麻烦: 一.python中的字符串类型是不允许直接改变元素的.必须先把要排序的字符串放在容器里,如list. 二.python中的list容器的sort( ...
- python list map成员排序_python的map关于Python列表排序方法reverse、sort、sorted详细说明...
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- Python 列表排序方法reverse、sort、sorted详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- python 列表排序方法sort、sorted技巧篇
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...
- python字符串排序方法
一般情况下,python中对一个字符串排序相当麻烦: 一.python中的字符串类型是不允许直接改变元素的.必须先把要排序的字符串放在容器里,如list. 二.python中的list容器的sort( ...
- python字典排序方法_Python字典的排序方法一则
今天需要对Python的字典进行排序,以获得有效的时间序列,采用了如下方法: 首先生成一个示例字典: >>> range_a = random.sample(range(0, 10) ...
- python列表排序方法-python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...
- python list排序方法_python中List的sort方法指南
简单记一下python中List的sort方法(或者sorted内建函数)的用法. List的元素可以是各种东西,字符串,字典,自己定义的类等. sorted函数用法如下: sorted(data, ...
- python字典排序方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.字典排序 二.题目 总结 -参考文档:https://blog.csdn.net/weixin_38739735/art ...
- python字符串排序方法(按字母大小顺序来排)
rnb = "mawdsddsddddfg" pxrnb = "".join((lambda x:(x.sort(),x)[1])(list(rnb))) pr ...
最新文章
- Ubuntu 安装OpenCV3.0.0
- android.hardware.camera2使用指南
- 判断大小简单算法_优化 | 贪婪算法有多好?Submodularity告诉你
- 微信小程序支付java视频_【原创】微信小程序支付(普通模式,公众号支付同适用)java后台案例...
- 反射与泛型 java_深入理解Java的反射和泛型
- redhat-5.4故障排除
- opencv获取人脸眼镜位置_用opencv检测人眼并定位瞳孔位置
- 编译Notepad2语法高亮记事本源码心得
- 树莓派4B 编译安装rtl8192eu usb网卡驱动
- Tomcat启动,提示 The JRE_HOME environment variable is not defined correctly 问题。
- 在浏览器访问action中的方法(动态方法调用)
- 如何解决ABBYY FineReader 12识别字体字符错误的问题
- 施密特正交化过程编程c语言,利用C程序编写格拉姆-施密特正交化的过程..docx
- 基于量子计算的无收益标的资产欧式看涨期权定价和delta风险分析
- 科一科四题库技巧软件源码
- 道翰天琼认知智能为您解密:Rust语言杀疯了!前有谷歌高薪争夺 Rust 人才,Facebook再官宣加入Rust基金会 「自2016年以来,Facebook 就已开始使用 Rust,并应用在开发
- PCL 点云的旋转与平移
- GPS实验二:GPS接收机的使用
- 1504.ICCVPartial Person Re-Identification 论文笔记
- 历年CCF-CSP认证考试题目解法/思想