博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python sorted
阅读量:7054 次
发布时间:2019-06-28

本文共 1806 字,大约阅读时间需要 6 分钟。

原作者:http://www.cnblogs.com/65702708/archive/2010/09/14/1826362.html 
 
 
我们需要对List进行排序,Python提供了两个方法
对给定的List L进行排序,
方法1.用List的成员函数sort进行排序
方法2.用built-in函数sorted进行排序(从2.4开始)
--------------------------------sorted---------------------------------------
>>> help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
---------------------------------sort----------------------------------------
>>> help(list.sort)
Help on method_descriptor:
sort(...)
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1
-----------------------------------------------------------------------------
iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。
 
注;一般来说,cmp和key可以使用lambda表达式。
sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。

Sorting basic:

>>> print sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5]
>>> L = [5, 2, 3, 1, 4] >>> L.sort() >>> print L [1, 2, 3, 4, 5]

Sorting  cmp:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>print sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

Sorting  keys:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>print sorted(L, key=lambda x:x[1]))
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

Sorting  reverse:

>>> print sorted([5, 2, 3, 1, 4], reverse=True) [5, 4, 3, 2, 1]
>>> print sorted([5, 2, 3, 1, 4], reverse=False) [1, 2, 3, 4, 5] 注:效率key>cmp(key比cmp快) 在Sorting Keys中:我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字 排过序后再用第一个关键字进行排序呢? >>> L = [('d',2),('a',4),('b',3),('c',2)] >>> print sorted(L, key=lambda x:(x[1],x[0])) >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

转载于:https://www.cnblogs.com/learnC/p/6114790.html

你可能感兴趣的文章
linux下控制帐户过期的多种方法
查看>>
创业第一个月总结
查看>>
6421B Lab1 规划和配置IPv4
查看>>
SFB 项目经验-57-Skype for business-录音系统-你拥有吗(模拟线路)
查看>>
基于策略的双出口NAT负载均衡和备份
查看>>
然而大部分期权并没有什么用
查看>>
windows下常用命令
查看>>
把Hyper-V Server 2008R2装进USB存储设备
查看>>
编程乐趣:C#实现12306自动登录(2013年11月27)
查看>>
Lync Server Front部署(并置中介)
查看>>
Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法
查看>>
Android Studio第三十五期 - 定时器弱引用+Service的写法
查看>>
安装和配置SQL Server 2016 With SP1
查看>>
VR產業鏈與人才從業方向
查看>>
吐槽苹果的革新 iOS 7
查看>>
理解并演示:SNMP简单网络管理协议(200-120新考点)
查看>>
RHEL5中安装Oracle11gR2修改用户SHELL限制、环境配置、内核参数
查看>>
服务器双网卡导致的网络故障及解决方案
查看>>
强力促销推动移动购物崛起
查看>>
软件外包相关职业规划
查看>>