python sort sorted key cmp
来源:互联网 发布:ios 网络图片尺寸 编辑:程序博客网 时间:2024/06/13 23:04
sort和sorted的区别
sort() 是list的内置方法,只有list有
sorted()方法是Python内置的,可以对所有可迭代的序列排序生成新的序列,只要可迭代就行,返回的都是一个list
ls = list([5, 2, 3, 1, 4])new_ls = sorted(ls)print(new_ls)ls.sort()#直接更改了原先ls内的排列顺序
sorted
sorted(itrearble, cmp=None, key=None, reverse=False)
默认的是升序排列,如果要降序排列,直接sorted(ls,reverse=True)
sorted('123456') 字符串['1', '2', '3', '4', '5', '6']sorted([1,4,5,2,3,6]) 列表[1, 2, 3, 4, 5, 6]sorted({1:'q',3:'c',2:'g'}) 字典, 默认对字典的键进行排序[1, 2, 3] sorted({1:'q',3:'c',2:'g'}.keys()) 对字典的键[1, 2, 3]sorted({1:'q',3:'c',2:'g'}.values()) 对字典的值['c', 'g', 'q']sorted({1:'q',3:'c',2:'g'}.items()) 对键值对组成的元组的列表[(1, 'q'), (2, 'g'), (3, 'c')]
key的使用
主要是用于指定需要比较的内容,但是如果不指定cmp的话,是使用默认的升序排序,也就是对于选定的key进行升序排列
s = ['Chr1-10.txt','Chr1-1.txt','Chr1-2.txt','Chr1-14.txt','Chr1-3.txt','Chr1-20.txt','Chr1-5.txt']sorted(s,key=lambda x : key(x.split('-')[1].split('.')[0]))#['Chr1-1.txt', 'Chr1-2.txt', 'Chr1-3.txt', 'Chr1-5.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-20.txt']sorted("This is a test string from Andrew".split(), key=str.lower)#['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]sorted(student_tuples, key=lambda student: student[2]) #[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]s=”Hello79351WorldMyNameIsMrFiona0352231964”''.join(sorted(s,key=lambda x: (x.isdigit(),x.isdigit() and int(x)%2==0,x.islower(),x.isupper(),x)))#实际上是将每个字符当做了一个tuple(0,0,0,1),然后默认的对tuple排序也是从小到大,比较方法就是比较每一位#'FHIMMNWaadeeilllmnooorrsy113335579902246'大写在前,小写在后,数字放在最后并且奇数在偶数之前
cmp的使用
cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。
可以这么理解,cmp()参数中第一个值比第二个值小,如果是b-a这种形式,也是第一个比第二个小,那么其实就是升序;
除了自己指定cmp函数外, 还有一种简便的写法:
sorted(list,cmp=lambda x,y:cmp(y,x))
借助原先的cmp函数进行一个简单的逆序(从大到小)
list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)]print(sorted(list1,cmp = lambda x,y: cmp(x[0],y[0])))#按照第一个位置的字母序排序#[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]print(sorted(list1,cmp = lambda x,y: cmp(y[0],x[0])))[('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]#下面这个写法其实和上面的是一样的sorted(list1,cmp=lambda x,y:cmp(y,x),key=lambda x:x[0])-----------------numbers=[5,2,9,7]>>> numbers.sort(cmp=lambda a,b:b-a)>>> numbers[9, 7, 5, 2]persons=[{'name':'zhang3','age':15},{'name':'li4','age':12}]persons.sort(cmp=lambda a,b:a['age']-b['age'])persons[{'age': 12, 'name': 'li4'}, {'age': 15, 'name': 'zhang3'}]
key加上reverse=True的组合基本上可以代替cmp字段
阅读全文
0 0
- python sort sorted key cmp
- python sorted()函数cmp,key,reverse参数详解
- Python的sort函数和sorted、lambda和cmp
- sort、sorted、cmp、reverse使用
- 深入Python(1): 字典排序 关于sort()、reversed()、sorted()、cmp()等
- python3中list.sort弃用cmp,key的用法
- python sorted和sort
- python--sort,sorted,argsort
- Python sort sorted 详解
- python sort and sorted
- Python sort与sorted
- Python sort and sorted
- Python sort and sorted
- Python sort sorted OrderDict
- python sort() sorted()
- python之sort(),sorted()
- python中sort()方法自定义cmp PythonTip-最大正整数
- Python sort sorted函数详解
- 大话数据结构笔记-线性表
- ◆竞赛题目◆◇NOIP 2017 普及组◇ 图书管理员
- Android学习——SystenUIService启动
- 注册热键及使用方法
- 关于细粒度图像识别的一些思考
- python sort sorted key cmp
- python fabric
- 分布式系统一致性保障方案总结
- VsCode放大缩小
- 关于3个div在一行,左右固定宽度,中间自适应
- InnoDB log file 设置多大合适?
- 唯快不破:TCP/IP协议疑难杂症全景解析
- deep learning 专项课程一 深层神经网络
- mariadb配置双主多从