python中sort和sorted函数小结

L.sort(cmp=None, key=None, reverse=False) 
sorted(iterable, cmp=None, key=None, reverse=False) 
这样看,sorted函数只比sort函数多一个iterable参数,其他没什么不一样,iterable是一个迭代器参数。 
1、 
sorted是一个内建函数,sort是列表的一个内部函数,因此调用方式不同,而且sorted函数不改变其迭代器参数,返回一个排序好的序列副本,可是sort做为列表的内部函数,在调用完以后,列表自身内部已是排序好的顺序函数

L1 = [3,2,5,1,4]
L2 = [3,2,5,1,4]
L1.sort()
print('L1:',L1)
print('sorted:',sorted(L2))
print('L2:',L2)
1
2
3
4
5
6
这段代码运行结果为 
L1: [1, 2, 3, 4, 5] 
sorted: [1, 2, 3, 4, 5] 
L2: [3, 2, 5, 1, 4]排序

2、key参数 
key 是带一个参数的函数, 用来为每一个元素提取比较值 
1.假如咱们不使用key参数,key默认是Noneit

L = [(1,'S'),(3,'E'),(2,'A')]
L.sort()
print('sort:',L)
L = [(1,'S'),(3,'E'),(2,'A')]
print('sorted:',sorted(L))
1
2
3
4
5
以上代码运行的结果为: 
sort: [(1, ‘S’), (2, ‘A’), (3, ‘E’)] 
sorted: [(1, ‘S’), (2, ‘A’), (3, ‘E’)]ast

2.如今咱们使用key参数,提取最后一个元素做为比较值匿名函数

def last(L):
    return L[-1]
L = [(1,'S'),(3,'E'),(2,'A')]
L.sort(key = last)
print('sort:',L)
L = [(1,'S'),(3,'E'),(2,'A')]
print('sorted:',sorted(L,key = last))
1
2
3
4
5
6
7
上面代码运行结果为: 
sort: [(2, ‘A’), (3, ‘E’), (1, ‘S’)] 
sorted: [(2, ‘A’), (3, ‘E’), (1, ‘S’)]lambda

3.使用lambda匿名函数做为key参数 
经过 lambda 关键字,能够建立短小的匿名函数。迭代器

L = [(1,'S'),(3,'E'),(2,'A')]
L.sort(key = lambda L : L[-1])
print('sort:',L)
L = [(1,'S'),(3,'E'),(2,'A')]
print('sorted:',sorted(L,key = lambda L : L[-1]))
1
2
3
4
5
运行结果为; 
sort: [(2, ‘A’), (3, ‘E’), (1, ‘S’)] 
sorted: [(2, ‘A’), (3, ‘E’), (1, ‘S’)]sort

3、reverse参数 
reverse参数是默认值false的时候是正序排,当reverse = True的时候是倒序排列return

L = [1,3,2]
L.sort()
print(L)
L.sort(reverse = True)
print(L)
1
2
3
4
5
运行结果为: 
[1, 2, 3] 
[3, 2, 1]参数

关于cmp函数,由于在Python3.x中已经取消了这个参数。。在此就很少说了 ---------------------   

相关文章
相关标签/搜索