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

Python09

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]]

Python中给列表排序的方式有很多,可以自己实现,也可以用Python提供的方法

使用Python提供的方法:

列表.sort()

列表.sort(reverse=True)

自己实现:

num_list = [64, 34, 25, 12, 22, 11, 90]

print(num_list)

n = len(num_list)

# 遍历所有数组元素

for i in range(n):

for j in range(0, n - i - 1):

if num_list[j] >num_list[j + 1]:

num_list[j], num_list[j + 1] = num_list[j + 1], num_list[j]

print(num_list)

代码发到这边格式有点乱,有需要的话可以去到黑马程序员社区。有很多计算机技术的基础入门和高级进阶的内容,源码什么的也都有。