python中sort函数与sorted函数详解
一、sort函数
1.1含义和基本形式
含义:sort函数是属于列表中的一种方法。列表使用sort()方法是对调用它的列表进行操作,会修改原列表的值。
基本形式:l.sort()(l是一种列表)
1.2相关用法
1.原址排序
列表可以进行原址排序,而元组是不可修改的,不支持原址排序。
x=[4,3,5,6,2,1]
x.sort()
#x=[1,2,3,4,5,6]
2.副本排序
1)[:]分片方法
x=[4,3,5,6,2,1]
y=x[ : ]
y.sort()
#x=[4,3,5,6,2,1]
#y=[1,2,3,4,5,6]
通过分片的方法可以将x中的元素全部拷给y,再通过y的原址排序
2)sorted()方法——这个是sorted函数的一种用法
sorted返回一个有序的副本,并且类型总是列表
x=[4,3,5,6,2,1]
y=sorted(x)
#x=[4,3,5,6,2,1]
#y=[1,2,3,4,5,6]
3.高级排序
1)自定义cmp
def comp(x, y):
if x < y:
return 1
elif x > y:
return -1
else:
return 0
nums = [3, 2, 8 ,0 , 1]
nums.sort(comp)
#nums=[8, 3, 2, 1, 0]
nums.sort(cmp) # 调用内建函数cmp ,升序排序
#nums=[0, 1, 2, 3, 8]
二、sorted函数
2.1含义和基本形式
含义:sorted函数 可以对所有可迭代的对象进行排序操作,其返回的是一个新的列表类型,而不是在原来的基础上进行的操作。(这点与sort方法差别很大)
基本形式:sorted(iterable,cmp,key,reverse)
其中iterable表示要排序的list或者iterable;
cmp表示排序时进行比较的函数,可以指定一个函数或者lambda函数;(cmp默认是升序排序)
key表示指定取待排序元素的哪一项进行排序;
reverse表示是否逆转排序;
例如:这是关键字对字典类型进行降序排序
dict={'a':97,'b':98}
list=[]
list=sorted(dict.item(),key=lambda d:d[0],reverse=True)
2.2相关用法
1.列表的sorted用法
l=[1,2,5,7,3]
list=sorted(l)
返回的是一个新的列表
2.自定义key以及reverse应用
这里的stat是一种字典类型。stat.items()返回stat的元素视图,即iterable部分。返回结果如([('a',1),('b',2)])
key用的是lambda函数。这里的lambda返回的是stat中的第二个域,即上面的1,2部分。对字典中的values进行排序。此时是按从小到大的顺序进行排序,需要用reverse进行反转,按照从大到小的顺序排序。
stat=sorted(stat.items(),key=lambda d:d[1],reverse=True)