1.函数用途
我们需要对List进行排序,Python提供了两个方法
对给定的List L进行排序,
方法1.用List的成员函数sort进行排序
方法2.用内建函数sorted进行排序(从python 2.4开始)
2.函数定义及参数解析
sort函数定义:sort(cmp=None, key=None, reverse=False)
sorted函数定义:sorted(iterable, cmp=None, key=None, reverse=False)
参数解析:
iterable:是可迭代类型;
cmp:用于比较的函数(大于时返回1,小于时返回-1,等于时返回0),比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
cmp与key均可以采用lambda表达式
reverse:排序规则. reverse = False,默认为False,升序排列或者reverse = True 。
注:python3.x中取消了cmp参数,也不支持直接往sort()里面传函数,但可以构造排序函数传递给key来实现。
3.二者的区别
sort( )函数与sorted( )函数最大的区别是, sort( )函数是对已存在的列表进行操作(改变原列表的值),调用其没有返回值;而sorted( )函数是返回一个新的list,不在原来的list上进行操作(不改变原列表的值),调用其返回一个排好序的list。
4.函数示例
L = [5, 2, 3, 1, 4]
#sorted()
>>> sorted(L)
>>>print(L) #L不改变
>>>print(sorted(L))
[5, 2, 3, 1, 4]
[1, 2, 3, 4, 5]
#sort()
>>>
>>> L.sort()
>>> print (L) #L改变
[1, 2, 3, 4, 5]
1、基于key
接受一个key函数来实现自定义的排序,
key指定的函数将作用于list中的每一个元素上,根据key函数返回的结果进行排序。
L = [(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
a = sorted(L, key=lambda x : x[0])
b = sorted(L, key=lambda x : x[1])
print L
print a
print b
输出:
[(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
[(‘a’, 3), (‘b’, 4), (‘c’, 1), (‘d’, 2)]
[(‘c’, 1), (‘d’, 2), (‘a’, 3), (‘b’, 4)
注:lambda匿名函数(也叫lambda表达式)的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。
来看看字符串排序的问题:
>>> sorted(['abc','Abc','Cba','bAc']) ['Abc', 'Cba', 'abc', 'bAc']