python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性的sorted()函数则对所有可迭代的序列都是适用的;并且sort()函数是内置函数,会改变当前对象,而sorted()函数只会返回一个排序后的当前对象的副本,而不会改变当前对象
原型:sort(fun,key,reverse=False)
参数fun是表明此sort函数是基于何种算法进行排序的,一般默认情况下python中用的是归并排序,并且一般情况下我们是不会重写此参数的,所以基本可以忽略;
参数key用来指定一个函数,此函数在每次元素比较时被调用,此函数代表排序的规则,也就是你按照什么规则对你的序列进行排序;
参数reverse是用来表明是否逆序,默认的False情况下是按照升序的规则进行排序的,当reverse=True时,便会按照降序进行排序
a = [5, 2, 3, 1, 4]
a.sort()
print(a.sort)
print(a)
输出:<built-in method sort of list object at 0x000001CDA7D1EDC8> [1, 2, 3, 4, 5]
对于sorted()函数中key的重写,和sort()函数中是一样的,所以刚刚对于sort()中讲解的方法,都是适用于sorted()函数中,在下面的解释中我也就不再列举了,并且下面将要讲解的key的重写也同样是适用于sort()函数的,那么为什么不再sort()函数中列举完呢,那是为了不偏不倚,给大家一个客观地理解
print(sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}))
输出:[1, 2, 3, 4, 5]
>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]
>>> student_tuples = [
??????? ('john', 'A', 15),
??????? ('jane', 'B', 12),
??????? ('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2])?? # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
|