0


Python sort 函数

1. sort 函数

函数原型:

L.sort(*, key=None, reverse=None)

它把

L

原地排序,也就是使用后并不是返回一个有序的序列副本,而是把当前序列变得有序!

参数说明:
argumentdescription*迭代类型的数据列表key函数类型,比较的原则reverse为 True 时逆序

Both list.sort() and sorted() have a key parameter to specify a function (or other callable) to be called on each list element prior to making comparisons.


2. 排序方法

2.1 自定义数据类型

首先定义一个 Student 类,每一个对象有学号

num

和名字

name

两个属性,对 Student 列表元素排序

class Student:

classStudent:def__init__(self, num, name):
        self.num = num
        self.name = name

    def__str__(self):return f'{self.num} - {self.name}'

List:

students =[
    Student(5,'Tom'),
    Student(2,'Tony'),
    Student(6,'Lucy'),
    Student(1,'Jerry')]

2.2 compare 函数有 1 个参数

key 接受的函数类型要求 函数只有一个参数,默认按返回值的升序对列表元素排序:

cmp2 =lambda stud: stud.num
students.sort(key=cmp2, reverse=False)for student in students:print(student)

结果如下:

1- Jerry
2- Tony
5- Tom
6- Lucy

2.3 compare 函数有 2 个参数

当比较函数有 2 个参数时,如:

defmycmp(stud1, stud2):''' return true when num is greater'''return stud1.num - stud2.num

此时需要用到

functools.cmp_to_key()

:

from functools import cmp_to_key

cmp1 =lambda stud1, stud2: stud1.num - stud2.num
students.sort(key=cmp_to_key(cmp1))for student in students:print(student)

结果如下:

1- Jerry
2- Tony
5- Tom
6- Lucy

3. 拓展

类似的,

max

函数也有参数 key:

a =[('x',5),('y',3),('z',8)]print(max(a, key=lambda x: x[-1]))# ('z', 8)

完结 🍻

标签: python

本文转载自: https://blog.csdn.net/qq_41140138/article/details/118401908
版权归原作者 我有两颗糖 所有, 如有侵权,请联系我们删除。

“Python sort 函数”的评论:

还没有评论