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)]
#声明一个列表
>>> l = [3,2,1,5,6,4]
#使用列表的sort方法,没有返回值。
>>> l.sort()
#直接对列表进行了处理。原值的顺序被改变了。
>>> l
[1, 2, 3, 4, 5, 6]
#还是声明一个列表
>>> l = [3,2,1,5,6,4]
使用sorted()对列表进行处理,直接返回新的列表。
>>> sorted(l)
[1, 2, 3, 4, 5, 6]
#打印原值,未发生改变。
>>> l
[3, 2, 1, 5, 6, 4]