python2.7中提供了两种方法对list进行排序,分别是list成员函数sort及built-in函数sorted.
函数原型分别如下:
- sort(…)
1 | L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*; |
- sorted(…)
1 | sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list |
2个函数参数及功能基本一致,唯一的区别是sort是在原有list上修改排序,sorted则是排序生成新的列表。
以sorted函数为例,参数详解如下:
1)iterable:能够一次返回它的一个成员的对象。iterable主要包括3类:
第一类是所有的序列类型,比如list(列表)、str(字符串)、tuple(元组)。
第二类是一些非序列类型,比如dict(字典)、file(文件)。
第三类是你定义的任何包含__iter__()或__getitem__()方法的类的对象。
2)cmp:比较函数,这个函数接收两个参数(iterable的元素)
如果第一个参数小于第二个参数,返回一个负数;
如果第一个参数等于第二个参数,返回零;
如果第一个参数大于第二个参数,返回一个正数。默认值为None。
3)key:指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
4)reverse:是一个布尔值。如果设置为True,列表元素将被降序排列,默认为升序排列。
5)返回值:是一个经过排序的可迭代类型,与iterable一样。
注1:key和reverse比一个等价的cmp函数处理速度要快。这是因为对于每个列表元素,cmp都会被调用多次,而key和reverse只被调用一次。
注2:cmp和key可以使用lambda表达式
示例代码如下:
1 | L=[('a',4),('a',1),('c',3),('d',3)] |
运行结果
1 | [('d', 3), ('c', 3), ('a', 4), ('a', 1)] |
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章