排序函数 / 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‘]
参考链接