sort 与 sorted 区别:
- sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
- list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
- sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)
一、基本形式
列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
排序,数字、字符串按照ASCII,中文按照unicode从小到大排序。
>>>List1 = [3, 2, 4, 5, 1, 9] >>>List1.sort() >>>List1 [1, 2, 3, 4, 5, 9]
如果需要一个排序好的副本,代码如下:
>>>List1 = [3, 2, 4, 5, 1, 9] >>>List2 = List1[:] >>>List2.sort() >>>List2 [1, 2, 3, 4, 5, 9] >>>List1 [3, 2, 4, 5, 1, 9]
另一种获取已排序的列表副本的方法是使用sorted函数:
>>>List1 = [3, 2, 4, 5, 1, 9] >>>List2 = sorted(List1) #sorted返回一个有序的副本,并且类型总是列表 >>>List2 [1, 2, 3, 4, 5, 9] >>>List1 [3, 2, 4, 5, 1, 9]
二、可选参数
sort方法还有两个可选参数:key和reverse
1、key在使用时必须提供一个排序过程中调用的函数:
>>>List1 = [‘1‘, ‘333‘, ‘22‘, ‘55555‘, ‘4444‘] >>>List1.sort(key=len) >>>List1 [‘1‘, ‘22‘, ‘333‘, ‘4444‘, ‘55555‘]
2、reverse实现逆序排序,需要提供一个布尔值:
>>>List1 = [3, 23, 1, 0, 8] >>>List1.sort(reverse=True) >>>List1 [23, 8, 3, 1, 0]
True为倒序排列,False为正序排列
三、例子
例:
列表按照其中每一个值的绝对值排序。
>>>List1 = [123, 89, -32, 0, 321, -36, 33] >>>List2 = sorted(List1, key=abs) >>>List2 [0, -32, 33, -36, 89, 123, 321] >>>List1 [123, 89, -32, 0, 321, -36, 33]
对复杂的元组排序
>>>student_tuples = [ (‘john‘, ‘A‘, 15), (‘jane‘, ‘B‘, 12), (‘tom‘, ‘A‘, 11), (‘Jack‘, ‘B‘, 13) ] >>>result = sorted(student_tuples, key=lambda student: student[2]) >>>result [(‘tom‘, ‘A‘, 11), (‘jane‘, ‘B‘, 12), (‘Jack‘, ‘B‘, 13), (‘john‘, ‘A‘, 15)]
根据字典的value排序
默认sorted是对dict的key排序的,如果要根据dict的value排序就需要指定key参数了。
>>>dict_my = {‘a‘: 2, ‘c‘: 5, ‘b‘: 1, ‘ab‘: 6, ‘e‘: 2} >>>dict_my {‘a‘: 2, ‘ab‘: 6, ‘b‘: 1, ‘c‘: 5, ‘e‘: 2} >>>result = sorted(dict_my) >>>result [‘a‘, ‘ab‘, ‘b‘, ‘c‘, ‘e‘] >>>dict_my[‘c‘] 5 >>>result2 = sorted(dict_my, key=lambda x : dict_my[x], reverse=True) >>>result2 [‘ab‘, ‘c‘, ‘a‘, ‘e‘, ‘b‘]
原文地址:https://www.cnblogs.com/ilyou2049/p/11208761.html
时间: 2024-10-12 21:01:48