本文摘自php中文网,作者PHP中文网,侵删。
浅谈排序
程序中经常用到排序函数,Python 提供了 sort 和 sorted 函数,一个原地排序,一个返回排序后的新结果
1、参数
函数原型:
1 | sort([ cmp [, key[, reverse]]])
|
意思是sort方法接受三个参数,都可以省略,默认是升序排序。
第一个参数cmp 是 比较函数,两个参数(列表的元素)怎样比较,对于整数这种内置类型的比较,方法很直观,但是对于自定义类型的比较,就要自己定义比较函数了,函数返回 0 ,就是两个数相等,返回负数,就是第一个参数小,第一个参数就排在第二个参数后面了。
第二个参数 key 是比较列表元素的什么属性。
第三个参数reverse是bool型,意思是是否反转(倒序排序)
①、cmp参数示例:
1 2 3 4 5 | s = [ 1 , 2 , 3 , 4 , 5 ]
s.sort( cmp = lambda a, b: cmp (b, a))
print s
|
②、常用参数key,reverse使用方法,代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | li = [ 'x11' , 'abc323' , 'e26' , '112ddd' , 'fstgd2' ]
li.sort(key = len ,reverse = True )
print (li)
li.sort(key = lambda x:x[ - 1 ])
print (li)
li = zip ( range ( 10 ), range ( 10 )[:: - 1 ])
print (li, type (li))
li = list (li)
print (li)
li.sort(key = lambda x:x[ - 1 ])
print (li)
li.sort()
print (li)
|
参数key可以是:key=int,key=len, key=lambda...
2、排序
①、如何按照 value 从小到大输出 dict 中的 key-value值?
1 2 3 4 5 | dic = { 'z' : 1 , 'y' : 4 , 'x' : 2 , 'g' : 3 , 'sg' : 3 }
dic = sorted (dic.items(),key = lambda x:x[ 1 ])
print (dic)
|
排序后转换为字典:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from collections import OrderedDict
dic = { 'z' : 1 , 'y' : 4 , 'x' : 2 , 'g' : 3 , 'sg' : 3 }
dic = OrderedDict( sorted (dic.items(),key = lambda x:x[ 1 ]))
print dic
for k,v in dic.items():
print k,v
|
②、给定一个只包含大小写字母,数字的字符串,对其进行排序,保证:
所有的小写字母在大写字母前面
所有的字母在数字前面
所有的奇数在偶数前面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | s = "Sorting1234"
def sort_str(x):
if x.isdigit():
if int (x) % 2 = = 0 :
return ( 4 ,x)
return ( 3 ,x)
elif x.islower():
return ( 0 ,x)
elif x.isupper():
return ( 1 ,x)
li = sorted (s,key = sort_str)
print (li)
string = ''.join(li)
print (string)
|
更简洁的代码:
1 2 3 4 5 | s = "Sorting1234"
s = "".join( sorted (s, key = lambda x: (x.isdigit(), x.isdigit() and int (x) % 2 = = 0 , x.isupper(), x.islower(), x)))
print (s)
|
以上就是浅谈Python中的排序的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Python使用最有效的方法删除大文件中的某一行的实例
Python如何向数组中添加元素
Python函数之bin()函数详解
Python函数学习的注意要点
Python能解微分方程吗
人工智能为什么用Python
Python中if语句与while语句的简单介绍(附示例)
Python判断闰年程序是什么
Python文件存储路径如何使用变量
Python global用法有哪些?
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 浅谈Python中的排序