Python排序的5种高级用法分享(含代码)
来源:投稿 作者:Fairy
编辑:学姐
排序是编程中常用的操作之一。Python提供了多种排序方法,可以适用于不同的排序需求。
那么,今天我们将介绍Python中常用的 5 种列表排序方法。
「1.使用sorted()
函数和lambda
表达式」
使用sorted()函数和lambda表达式进行自定义排序:可以使用sorted()函数和lambda表达式来根据需要对列表、元组或字典等数据结构进行自定义排序。
首先,使用 sorted()
函数对 my_list
进行排序,并将排序后的结果赋值给变量 sorted_list
。在 sorted()
函数中,使用 key
参数对排序依据进行定义,这里使用 lambda
表达式创建了一个简单的匿名函数,该函数接受一个参数 x,并返回元组中的第一个元素 x[0]。因此,sorted()
函数根据元组的第一个元素进行排序。
最后,打印出排好序的列表 sorted_list
,最终结果如下:

「2.使用operator
模块」
这里需要先将operator
模块导入脚本中,可以使用其中的函数(如itemgetter(),attrgetter())对复杂的数据类型进行排序。
首先,使用 items()
方法将字典转换为元组列表,每个元组包含一个键和一个值。然后使用 sorted()
函数对该列表进行排序。key 参数指定排序依据,operator.itemgetter(1)
表示按照元组的第二个元素(即字典的值)进行排序,reverse=True
表示进行降序排序。排序后的结果是一个元组列表,每个元组包含排好序的键值对。
最后,使用 dict()
函数将排好序的元组列表转换回字典格式,并将结果赋值给变量 sorted_dict
。打印出 sorted_dict
,最终结果如下:

「3.使用heapq
模块」
heapq
是一个Python
内置模块,提供了对堆的基本支持。它可以对可迭代对象进行原地堆排序并返回一个排序后的列表。
使用 heapq.nsmallest()
函数可以从一个可迭代对象中,快速地找到其中的最小元素,同时可以指定要返回的最小元素个数。该函数接受两个参数:第一个参数是要返回的元素个数(即本例中的 3),第二个参数是一个可迭代对象(即本例中的列表 my_list
)。
在本例中,我们将列表 my_list 传递给 heapq.nsmallest()
函数,并请求找出前 3 个最小的数字。smallest_numbers
变量存储了找到的最小数字,结果为 [1, 3, 4]。这些数字是按照升序排列的,符合预期的结果,最终结果如下:

「4.使用functools
模块」
在某些情况下,可能需要使用多个条件对数据进行排序。可以使用functools
模块中的cmp_to_key()
函数来实现这一点。
该 lambda
函数接受两个参数 x 和 y,分别表示要比较的元组。首先,它通过比较两个元组的第一个元素进行排序,即 x[0] - y[0];如果第一个元素相同,则再按照第二个元素降序排列,即 y[1] - x[1]。因为默认情况下 sorted 函数是升序排列,所以在第二个比较时需要对参数位置进行反转。
最后,使用 sorted() 函数对 my_list 进行排序,并将结果存储在 sorted_list 变量中。打印输出 sorted_list ,最终结果如下:

「5.使用numpy
模块」
numpy.sort(array)将按升序对数组进行排序。
我们先创建了一个一维数组 my_array,然后调用 np.sort() 函数对该数组进行升序排序。排序结果被存储在 sorted_array 数组中。最后使用 print() 函数打印输出 sorted_array ,最终结果如下:

推荐课程
《Python · AI&数据科学入门》

关注“学姐带你玩AI”公众号
回复“Python”了解课程详情