sort函数是快速排序吗,快速排序和sort
列表存储一串数字,如“21”
,如何按数值大小排序得到新的列表?
l=[1 , 3 , 2 , 32 , 1 , 453 , 232]
l.sort(key = int) # key = int,只按照数值大小进行比较
from运算符导入itemgetter,attrgetterS=[(约翰,甲,15),(快乐期待,乙,12),(戴夫,乙,10),]
打印itemgetter(0,2)
打印排序的(s,key=itemgetter(2))
从运算符导入itemgetter,attrgetter
d={ 数据1:3,数据2:1,数据3:2,数据4:4}
打印数据项()
print sorted(d . ITER items(),key=itemgetter (0)) #根据元组的第一项排序,这里是dictionary的键。
print sorted(d . ITER items(),key=itemgetter (1)) #根据元组的第二项排序,这里是字典的值。
Python列表排序
简要记下python中List的排序方法(或排序内置函数)的用法。
关键词:
Python列表排序python字典排序排序
List的元素可以是各种东西,字符串,字典,自定义类等。
排序函数的用法如下:
Python代码
已排序(数据,cmp=无,键=无,反转=假)
其中,data是要排序的数据,List或iterator、cmp和key都可以是函数。这两个函数作用于数据的元素产生一个结果,sorted方法根据这个结果进行排序。
Cmp(e1,e2)是具有两个参数的比较函数。返回值为负数:e1 e2,0: e1==e2,正数:e1 e2。默认值为None,即使用内置的比较函数。
Key是一个只有一个参数的函数,用于提取每个元素的比较值。默认值为None,即直接比较每个元素。
一般key和reverse比cmp快很多,因为每个元素只处理一次;Cmp将被多次处理。
用例子来说明排序的用法:
1.对元组组成的列表进行排序。
Python代码
学生=[(约翰,甲,15),(快乐期待,乙,12),(戴夫,乙,10),]
按键函数排序(lambda的用法见注1)
Python代码
Sorted (students,key=lambdas:s[2])# sortbyage[( Dave , B ,10),(快乐期待, B ,12),( john , A ,15)]
按cmp功能排序
Python代码
Sorted (students,CMP=Lambdax,Y: CMP (X [2],Y[2])#按年龄ASC [(Dave , B ,10),( Happy Expectation , B ,12),( John , A
Sorted (students,CMP=Lambdax,Y: CMP (Y [2],X[2])# Sortbyagedesc,交换x/y的位置[(john , A ,15),(快乐期待, B ,12),(
使用operator函数加速,上面的排序等价于:(itemgetter用法见注2)
Python代码
学生=[(约翰,甲,15),(快乐期待,乙,12),(戴夫,乙,10),]
fromoperatorimportitemgetter,attrgettersorted(students,key=itemgetter(2))
具有运算符功能的多级排序
Python代码
Sorted (students,key=itemgetter (1,2))# Sortbygradethanbyage[( John , A ,15),( Dave , B ,10),(快乐期待, B ,12)]
2.按字典排序
Python代码
d={data1:3, data2:1, data3:2, data 4 :4 }排序(d.iteritems(),key=itemgetter(1),reverse=True)[(data4 ,4),( data1 ,3),( data3 ,2),( data2 ,1)]
从运算符导入itemgetter,attrgetter
d={ 数据1:3,数据2:1,数据3:2,数据4:4}
打印数据项()
print sorted(d . ITER items(),key=itemgetter (0)) #根据字典的键进行排序
print sorted(d . ITER items(),key=itemgetter (1)) #根据字典的值进行排序