博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:python list排序的两种方法及实例讲解
阅读量:5119 次
发布时间:2019-06-13

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

对List进行排序,Python提供了两个方法方法1.用List的内建函数list.sort进行排序list.sort(func=None, key=None, reverse=False) Python实例:>>> list = [2,5,8,9,3]  >>> list  [2,5,8,9,3]  >>> list.sort()  >>> list  [2, 3, 5, 8, 9]方法2.用序列类型函数sorted(list)进行排序(从2.4开始)Python实例:>>> list = [2,5,8,9,3]  >>> list  [2,5,8,9,3]  >>> sorted(list)  [2, 3, 5, 8, 9]两种方法的区别:sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。list.sort() 不会返回对象,改变原有的list。其他sort的实例: 实例1:正向排序   >>>L = [2,3,1,4]>>>L.sort()>>>L>>>[1,2,3,4] 实例2:反向排序   >>>L = [2,3,1,4]>>>L.sort(reverse=True)>>>L>>>[4,3,2,1] 实例3:对第二个关键字排序    >>>L = [('b',6),('a',1),('c',3),('d',4)]>>>L.sort(lambda x,y:cmp(x[1],y[1])) >>>L>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)] 实例4: 对第二个关键字排序    >>>L = [('b',6),('a',1),('c',3),('d',4)]>>>L.sort(key=lambda x:x[1]) >>>L>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)] 实例5: 对第二个关键字排序   >>>L = [('b',2),('a',1),('c',3),('d',4)]>>>import operator>>>L.sort(key=operator.itemgetter(1)) >>>L>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例6:(DSU方法:Decorate-Sort-Undercorate)  >>>L = [('b',2),('a',1),('c',3),('d',4)]>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort>>>A.sort()>>>L = [s[2] for s in A]>>>L>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项为比较关键字进行排序.效率比较:cmp < DSU < key通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当 多关键字比较排序:实例7:>>>L = [('d',2),('a',4),('b',3),('c',2)]>>> L.sort(key=lambda x:x[1])>>> L>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法 实例8:   >>> L = [('d',2),('a',4),('b',3),('c',2)]>>> L.sort(key=lambda x:(x[1],x[0]))>>> L>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)] 实例9:>>> L = [('d',2),('a',4),('b',3),('c',2)]>>> L.sort(key=operator.itemgetter(1,0))>>> L>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]为什么实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个

 

转载于:https://www.cnblogs.com/wind-wang/p/6090958.html

你可能感兴趣的文章
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
HTML+CSS学习笔记(九)
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
rsync
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>