Python中对列表进行排序的方法有哪些呢?

Python011

Python中对列表进行排序的方法有哪些呢?,第1张

python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法

二者区别为:

sort()方法对list排序会修改list本身,不会返回新list。sort()只能对list进行排序。

sorted()方法会返回新的list,保留原来的list。sorted 可以对所有可迭代的对象进行排序操作。

列表的sort方法就是用来进行排序的。

主要就是两个参数,key,reverse

先说reverse,这个很简单,就是指出是否进行倒序排序:一般情况下,1排在2的前面,而倒序则相反。

key参数:一般它是一个函数,它接受列表中每一个元素,返回一个可用用于比较的值。

s=[1,2,3,4,5]

s.sort(key=lambda _: _**2%7)

print(s)

输出的是:[1, 3, 4, 2, 5]

如果看不懂lambda表达式,可以看这一段等价的写法:

def myfn(x):

....return (x * x) % 7

s=[1,2,3,4,5]

s.sort(key=myfn)

print(s)

输出的结果是一样的。

key使用的函数可以是自定义函数也可以pytho内置的函数,或者是某个类或者实例的方法,只要它能接受一个参数,返回一个可比较的值即可。比如这样:

s=[[1,2,4],[3,3,5],[1,1,1],[5,7,9]]

s.sort(key=max)  # 直接使用max函数作为排序依据

print(s)

[[1, 1, 1], [1, 2, 4], [3, 3, 5], [5, 7, 9]]