Python_Tips[3] -> sort/sorted 排序函数

排序函数 / Sort Function


list自带的sort函数可以实现对列表的排列功能,具有同样功能的还有sorted函数。

基本形式

列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。sort函数是基于原有的列表进行修改,因此若是需要备份原始列表则可以通过列表的切片实现(若是直接赋值则被赋值列表会跟随原始列表变化)。

1 # List built-in function, sort
2 x = [4, 2, 5, 3, 8, 3]
3 
4 # Slice up the list x, then generate a new list y
5 y = x[:]
6 x.sort()
7 print(x) # [2, 3, 3, 4, 5, 8]
8 print(y) # [4, 2, 5, 3, 8, 3]

而sorted函数与sort的功能类似,但sorted不仅可以操作列表,还可以操作字符串与字典等,操作字典时返回的是字典键值的排序列表。

1 y = sorted(y) # [2, 3, 3, 4, 5, 8]
2 
3 z = sorted('python') # ['h', 'n', 'o', 'p', 't', 'y']
4 z = sorted({3: 'c', 4: 'w', 1: 'c'}) # [1, 3, 4]

可选参数

sort和sorted函数可选的参数主要有两个,key和reevrse,其中key提供一个在排序过程中每次都会调用的函数,reverse则确定排序的大小顺序。

1 # key parameter
2 x = ['mmm', 'm', 'mmmm', 'mmmmm', 'mm'] 
3 x.sort(key=len) # ['m', 'mm', 'mmm', 'mmmm', 'mmmmm']
4 sorted(x, key=len) # ['m', 'mm', 'mmm', 'mmmm', 'mmmmm']
5 
6 # reverse parameter
7 x = ['3', '2', '1', '6', '4'] 
8 x.sort(key=int, reverse=True) # ['6', '4', '3', '2', '1']
9 sorted(x, key=int, reverse=False) # ['1', '2', '3', '4', '6']

参考链接


http://www.jb51.net/article/52730.htm

原文地址:https://www.cnblogs.com/stacklike/p/8227605.html