首页 > 编程知识 正文

Python实战:一次完整的List排序教程

时间:2024-04-27 11:09:11 阅读:335102 作者:LIGR

1. 介绍

在编程中,List(列表)是一个非常常用的数据类型,而对List进行排序,也是一个经常需要用到的操作。Python作为一个方便、易学的高级编程语言,提供了多种方法来对List进行排序。本文将会为大家详细介绍Python中对List进行排序的方法,包括内置函数、高级排序以及自定义排序等,同时通过实例演示,加深大家对排序的理解。

2. 正文

一、内置函数排序

Python内置函数sort()可以对List进行排序,sort()函数有两个参数,reverse和key。其中,reverse参数为False时表示升序排序,为True时表示降序排序;而key参数可以接受一个函数,指定一个映射关系,排序时依据映射后的结果进行排序。

下面我们以一个包含10个元素的List为例,来进行sort()的演示:

a = [4, 1, 7, 3, 8, 5, 2, 9, 10, 6]
a.sort()    # 默认升序排列
print(a)    # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a.sort(reverse=True)    # 降序排列
print(a)    # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

def func(x):    # 自定义映射关系,按照元素个位数排序
    return x % 10
a.sort(key=func)    # 自定义函数映射
print(a)    # [10, 1, 2, 3, 4, 5, 6, 7, 8, 9]

二、高级排序

Python还提供了一些高级的排序函数,如sorted()、heapq.nlargest()、heapq.nsmallest()等。这些高级函数在某些情况下可以比sort()更有效率、更灵活的完成排序操作。

比如,在需要同时对多个List进行排序时,sorted()可以根据任意一个List的元素来进行排序,而sort()则无法做到;或者在需要从一个非常大的List中取出前几个最大或最小的元素时,使用heapq.nlargest()、heapq.nsmallest()可以更快速地完成任务。

下面我们再分别以sorted()和nlargest()为例,演示高级排序的使用方法:

x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]
z = [8, 6, 7, 9, 10]

result = sorted(zip(x, y, z), key=lambda v: v[2])    # 根据z来排序
print(result)    # [(1, 5, 8), (2, 4, 6), (3, 3, 7), (4, 2, 9), (5, 1, 10)]

list1 = [4, 6, 8, 1, 3, 10, 7, 5, 2, 9]
result = heapq.nlargest(3, list1)    # 取出前3个最大的元素
print(result)    # [10, 9, 8]

三、自定义排序

在某些情况下,内置的排序函数可能并不能满足我们的需求,这时我们就需要来自定义排序。自定义排序的本质就是为需要排序的元素所在的List绑定一个排序函数,此函数将接受该List中的每一个元素作为输入,返回一个可比较的对象,用于进行排序。

下面我们以一个List中包含学生信息的元组为例,来进行自定义排序的演示:

students = [('Tom', 'A', 18), ('John', 'B', 17), ('Emma', 'A', 20), ('Stacy', 'C', 19)]

def sort_by_name(student):
    return student[0]    # 根据名字排序

def sort_by_grade(student):
    return student[1]    # 根据成绩等级排序

def sort_by_age(student):
    return student[2]    # 根据年龄排序

students.sort(key=sort_by_name)    # 按照名字排序
print(students)    # [('Emma', 'A', 20), ('John', 'B', 17), ('Stacy', 'C', 19), ('Tom', 'A', 18)]

students.sort(key=sort_by_age)    # 按照年龄排序
print(students)    # [('John', 'B', 17), ('Tom', 'A', 18), ('Stacy', 'C', 19), ('Emma', 'A', 20)]

students.sort(key=sort_by_grade)    # 按照成绩等级排序
print(students)    # [('Tom', 'A', 18), ('Emma', 'A', 20), ('John', 'B', 17), ('Stacy', 'C', 19)]

3. 总结

在Python中对List进行排序是非常常用的一个操作,在各种场景中,我们可以根据不同的需求来选择使用内置函数排序、高级排序或自定义排序等方法。本文为大家详细介绍了这些排序方法的使用方法,并通过具体的实例加深了大家对其的理解。希望能对大家的学习有所帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。