python内置函数sorted
sorted与sort
sort:是对list排序的所用方法,是对已经存在的原列表进行操作,没有返回值。
sorted:可以对所有可迭代的对象(元组、列表等)进行排序。返回一个新的列表,不会对原有的对象进行操作。
sorted语法
sorted(iterable,cmp=None,key=None,reverse=False)
iterable——可迭代对象(用来排序的列表、元组等)
cmp——比较的函数,两个参数,参数值由迭代对象中取出,函数有返回值:大于则返回1,小于返回-1,等于返回0。
具体写法为:cmp=lambda x,y:x[1],y[1]
(x,y表示用来排序的元组或者列表等的元素,‘1’代表元素的下标)
key——主要用来进行比较的元素,只有一个参数,参数为迭代对象中取出的元素,指定可迭代对象的元素来进行排序。
具体写法为:key=lambda x:x[1]
(x表示排序的对象中的元素,‘1’表示元素的下标)
cmp与key类似,但是cmp是2个参数,而key只有一个参数。对于待排序的对象,cmp会被多次调用,key只会被调用一次。
reverse——排序规则,reverse=True:降序;reverse=False升序(默认)。
实例
(不同的代码编译环境存在差异)
L=[('d',1),('a',4),('e',3),('c',2)]
print sorted(L,cmp=lambda x,y:x[1],y[1])#利用cmp函数对L中对象的数字升序排列
print sorted(L,cmp=lambda x,y:x[0],y[0],reverse=True) #利用cmp函数对L中对象的字母进行降序排列
print sorted(L,key=lambda x:x[0])#利用key函数对L中的元素的字母进行升序排列
print sorted(L,key=lambda x:x[1],reverse=True)#利用key函数对L中的元素的数字进行降序排列
print L#对L进行输出
#输出结果为:
[('d',1),('c',2),('e',3),('a',4)]
[('e',3),('d',1),('c',2),('a',4)]
[('a',4),('c',2),('d',1),('e',3)]
[('a',4),('e',3),('c',2),('d',1)]