活动地址:CSDN21天学习挑战赛
sort()函数实例详解
Python 列表 List sort ()函数: sort() 函数用于对原列表进行排序,如果指定参数,则使用指定的比较函数。使用 sort() 方法进行正序排序,永久性排序,排序后不可恢复原来的排序。倒序排序,在 sort() 方法括号内传入参数 reverse=True 达到倒序排序效果。永久性,排序后不再保持原来排序方式的 |
|
语 法 |
list.sort(key=None, reverse=False) |
参 数 |
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。 |
注 意 |
1、使用sort()方法对list排序会修改list本身,不会返回新list, 2、如果你不需要保留原来的list,可使用sort()。 3、sort()方法不能对字典dict进行排序。 4、sort()方法不能直接将 int 和 str 类型的比较排序。 5、sort()方法不能直接将 tuple 和 str 类型的比较。 6、sort()方法不能直接将 list 和 str 类型的比较。 7、sort()方法默认升序排序。 8、python2中有cmp参数,但是在python3中这一参数被取消了 |
返 回 值 |
该方法不返回任何值,但是会对列表的对象进行排序。 |
知识拓展 |
sorted ()函数:函数对所有可迭代的对象进行排序操作。 sort 与 sorted 区别: 1、sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 2、list 的 sort()方法无返回值,sorted()函数会返回一个重新排序的列表。 3、list.sort()会修改原序列,sorted()函数不改变原有序列 |
实 例 |
|
代 码 |
#函数sort()是对列表就地排序 mlist= [4,7,7,1,9,5,2,6] mlist.sort() print(mlist) |
运行结果 |
[1, 2, 4, 5, 6, 7, 7, 9] |
代 码 |
#函数sort()会修改原序列,不返回任何值 mlist= [4,7,7,1,9,5,2,6] print(mlist.sort()) mlist2=mlist.sort() print(mlist2) |
运行结果 |
None None |
代 码 |
#sort()排序reverse参数接受的是一个bool类型的值 (Ture or False),排序规则:reverse = True 降序, reverse = False 升序(默认)。 (Ture or False)第一个字母必须是大写的。 mlist= [4,7,7,1,9,5,2,6] mlist.sort(reverse=True) print(mlist) |
运行结果 |
[9, 7, 7, 6, 5, 4, 2, 1] |
代 码 |
#sort()排序key参数接受的是一个只有一个形参的函数,sort()将按照权值大小进行排序 mlist= [4,7,7,1,9,5,2,6] mlist.sort() print(mlist) def size(a): mlist=10-int(a) return mlist mlist.sort(key=size) print(mlist) |
运行结果 |
[1, 2, 4, 5, 6, 7, 7, 9] [9, 7, 7, 6, 5, 4, 2, 1] |
代 码 |
mlist = ["Apple", "Sydney", "Banana", "Strawberry", "pineapple", "peach"] print(mlist) mlist.sort() print(mlist) mlist.sort(reverse=True) print(mlist) |
运行结果 |
['Apple', 'Sydney', 'Banana', 'Strawberry', 'pineapple', 'peach'] ['Apple', 'Banana', 'Strawberry', 'Sydney', 'peach', 'pineapple'] ['pineapple', 'peach', 'Sydney', 'Strawberry', 'Banana', 'Apple'] |
代 码 |
mlist = ["苹果", "雪梨", "香蕉", "草莓", "菠萝", "桃子"] print(mlist) mlist.sort() print(mlist) mlist.sort(reverse=True) print(mlist) |
运行结果 |
['苹果', '雪梨', '香蕉', '草莓', '菠萝', '桃子'] ['桃子', '苹果', '草莓', '菠萝', '雪梨', '香蕉'] ['香蕉', '雪梨', '菠萝', '草莓', '苹果', '桃子'] |
代 码 |
mlist= [0,2,4,6,8,'Adversity Awake', '逆境清醒'] mlist.sort() print(mlist) |
运行结果 |
TypeError: unorderable types: str() < int() # sort 方法不适合 int 和 str 类型的比较。 |
代 码 |
mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] mlist.sort() print(mlist) |
运行结果 |
['0', '2', '4', '6', '8', 'Adversity Awake', '逆境清醒'] |
代 码 |
#降序输出列表 mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] mlist.sort(reverse=True) print(mlist) |
运行结果 |
['逆境清醒', 'Adversity Awake', '8', '6', '4', '2', '0'] |
代 码 |
mlist= [2,9,7,0,6,9,1,8] mlist.sort() print(mlist) |
运行结果 |
[0, 1, 2, 6, 7, 8, 9, 9] |
代 码 |
#降序输出列表 mlist= [2,9,7,0,6,9,1,8] mlist.sort(reverse=True) print(mlist) |
运行结果 |
[9, 9, 8, 7, 6, 2, 1, 0] |
代 码 |
mlist=[(2,9),(7,0),(6,9),(1,8)] mlist.sort() print(mlist) |
运行结果 |
[(1, 8), (2, 9), (6, 9), (7, 0)] |
代 码 |
#降序输出列表 mlist=[(2,9),(7,0),(6,9),(1,8)] mlist.sort(reverse=True) print(mlist) |
运行结果 |
[(7, 0), (6, 9), (2, 9), (1, 8)] |
代 码 |
#通过指定列表中的元素排序来输出列表 #指定列表中的第二个元素排序来输出列表 mlist=[(2,9),(7,0),(6,9),(1,8)] print(mlist) def choosesort(mkey): return mkey[1] mlist.sort(key=choosesort) print(mlist) |
运行结果 |
[(2, 9), (7, 0), (6, 9), (1, 8)] [(7, 0), (1, 8), (2, 9), (6, 9)] |
代 码 |
#通过指定列表中的元素排序来输出列表 #指定列表中的第二个元素排序来输出列表 #降序输出列表 mlist=[(2,9),(7,0),(6,9),(1,8)] print(mlist) def choosesort(mkey): return mkey[1] mlist.sort(key=choosesort,reverse=True) print(mlist) |
运行结果 |
[(2, 9), (7, 0), (6, 9), (1, 8)] [(2, 9), (6, 9), (1, 8), (7, 0)] |
代 码 |
mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] mlist.sort(reverse=True) print(mlist) mlist1= [(0,8,2,6,4),'逆境清醒','Adversity Awake'] mlist1.sort(reverse=True) print(mlist1) |
运行结果 |
['逆境清醒', 'Adversity Awake', '8', '6', '4', '2', '0'] 。。。。 TypeError: unorderable types: tuple() < str() # sort 方法不适合 tuple 和 str 类型的比较。 |
代 码 |
mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] mlist.sort(reverse=True) print(mlist) mlist1= [[0,8,2,6,4],'逆境清醒','Adversity Awake'] mlist1.sort(reverse=True) print(mlist1) |
运行结果 |
['逆境清醒', 'Adversity Awake', '8', '6', '4', '2', '0'] 。。。 TypeError: unorderable types: list() < str() # sort 方法不适合 list 和 str 类型的比较。 |
代 码 |
#非要将列表里不同类型相比较,可以利用 key 参数将数字全部转换为 str 类型后排序 mlist= [4,7,7,1,9,"Adversity Awake",'abc', 'syz'] mlist.sort(key = str) print(mlist) |
运行结果 |
[1, 4, 7, 7, 9, 'Adversity Awake', 'abc', 'syz'] |
多关键字排序的方法 |
|
代 码 |
mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]] print(mlist) #先按第一个元素升序排序,第一个元素相同按第二个元素升序排序 mlist.sort() print(mlist) |
运行结果 |
[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]] [1, 6], [1, 8], [2, 9], [3, 4], [6, 9], [7, 0]] |
代 码 |
#先按第一个元素升序排序,第一个元素相同则保持原来的顺序 mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]] print(mlist) mlist.sort(key=lambda x:x[0]) print(mlist) |
运行结果 |
[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]] [1, 8], [1, 6], [2, 9], [3, 4], [6, 9], [7, 0]] |
代 码 |
#先按第二个元素升序排序,第二个元素相同则保持原来的顺序 mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]] print(mlist) mlist.sort(key=lambda x:x[1]) print(mlist) |
运行结果 |
[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]] [7, 0], [3, 4], [1, 6], [1, 8], [2, 9], [6, 9]] |
代 码 |
#先按第二个元素升序排序,第二个元素相同按第一个元素降序排序 mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]] print(mlist) mlist.sort(key=lambda x:(x[1],-x[0])) print(mlist) |
运行结果 |
[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]] [7, 0], [3, 4], [1, 6], [1, 8], [6, 9], [2, 9]] |
代 码 |
#先按字符串长度升序排序,长度相同按字典序升序排序 mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] print(mlist) mlist.sort(key=lambda x:(len(x),x)) print(mlist) |
运行结果 |
['0', '8', '2', '6', '4', '逆境清醒', 'Adversity Awake'] ['0', '2', '4', '6', '8', '逆境清醒', 'Adversity Awake'] |
代 码 |
#先按字符串长度升序排序,长度相同按字典序降序排序 mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] print(mlist) mlist.sort(key=lambda x:(len(x),list(map(lambda c:-ord(c),x)))) print(mlist) |
运行结果 |
['0', '8', '2', '6', '4', '逆境清醒', 'Adversity Awake'] ['8', '6', '4', '2', '0', '逆境清醒', 'Adversity Awake'] |
代 码 |
#先按字符串长度降序排序,长度相同按字典序升序排序 mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] print(mlist) mlist.sort(key=lambda x:(-len(x),x)) print(mlist) |
运行结果 |
['0', '8', '2', '6', '4', '逆境清醒', 'Adversity Awake'] ['Adversity Awake', '逆境清醒', '0', '2', '4', '6', '8'] |