Python中对列表排序实例
2023-06-13 09:15:39 时间
很多时候,我们需要对List进行排序,Python提供了两个方法,对给定的ListL进行排序:
方法1.用List的成员函数sort进行排序
方法2.用built-in函数sorted进行排序(从2.4开始)
这两种方法使用起来差不多,以第一种为例进行讲解:
从Python2.4开始,sort方法有了三个可选的参数,PythonLibraryReference里是这样描述的
cmp:cmpspecifiesacustomcomparisonfunctionoftwoarguments(iterableelements)whichshouldreturnanegative,zeroorpositivenumberdependingonwhetherthefirstargumentisconsideredsmallerthan,equalto,orlargerthanthesecondargument:
"cmp=lambdax,y:cmp(x.lower(),y.lower())"
key:keyspecifiesafunctionofoneargumentthatisusedtoextractacomparisonkeyfromeachlistelement:"key=str.lower"
reverse:reverseisabooleanvalue.IfsettoTrue,thenthelistelementsaresortedasifeachcomparisonwerereversed.Ingeneral,thekeyandreverseconversionprocessesaremuchfasterthanspecifyingan
equivalentcmpfunction.Thisisbecausecmpiscalledmultipletimesforeachlistelementwhilekeyandreversetoucheachelementonlyonce.
以下是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",2),("a",1),("c",3),("d",4)]
>>>L.sort(cmp=lambdax,y:cmp(x[1],y[1]))
>>>L
>>>[("a",1),("b",2),("c",3),("d",4)]
实例4:
>>>L=[("b",2),("a",1),("c",3),("d",4)]
>>>L.sort(key=lambdax:x[1])
>>>L
>>>[("a",1),("b",2),("c",3),("d",4)]
实例5:
>>>L=[("b",2),("a",1),("c",3),("d",4)]
>>>importoperator
>>>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)fori,xinenumerate(L)]#icanconfirmthestablesort
>>>A.sort()
>>>L=[s[2]forsinA]
>>>L
>>>[("a",1),("b",2),("c",3),("d",4)]
以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以Listitem中的某一项
为比较关键字进行排序.
效率比较:
cmp<DSU<key
通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当
多关键字比较排序:
实例7:
>>>L=[("d",2),("a",4),("b",3),("c",2)]
>>>L.sort(key=lambdax: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=lambdax:(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是的比较从左到右之一比较的,比较完第一个,如果
相等,比较第二个
相关文章
- Python Flask 编程 | 连载 02 - Flask 路由
- 【Python基础】Python简介
- python的进制转换器,Python进制转换[通俗易懂]
- python jieba库_Python jieba库的使用说明「建议收藏」
- python hashlib_Python hashlib模块实例使用详解
- 怎么用python打开csv文件_Python文本处理之csv-csv文件怎么打开[通俗易懂]
- python表情代码_Python实现表情包的代码实例[通俗易懂]
- 【说站】python PyQt子菜单的使用
- 遗传算法的应用实例python实现_遗传算法Python解决一个问题
- lambda python表达式_Python的条件表达式和lambda表达式实例
- 数据结构与算法Python_数据结构与算法python语言实现
- 9个都要了解的单行Python代码
- Linux系统快速运行Python脚本(linux运行python脚本)
- 搞定!Linux下快速设置Python环境变量(linux设置python环境变量)
- python装饰器使用方法实例
- python和C语言混合编程实例
- python编写暴力破解FTP密码小工具
- python映射列表实例分析