欢迎访问宙启技术站
智能推送

Python中的sort()函数:如何对列表元素进行排序

发布时间:2023-06-13 07:12:25

Python中的sort()函数是列表类型的一个内置函数,它可以帮助我们对一个列表的元素进行排序。sort函数支持对数字和字符串类型的元素进行排序,也支持自定义的排序规则。

sort()函数的语法如下:

list.sort(key=None, reverse=False)

其中,key表示排序规则,可以是一个函数或lambda表达式,用来指定按照什么规则进行排序;reverse表示是否逆序排序,默认为False,表示升序排序。

对于数字类型的元素,sort()函数的用法比较简单,直接调用sort()函数即可。例如:

num_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
num_list.sort()
print(num_list)

输出结果为:

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

对于字符串类型的元素,sort()函数默认按照ASCII码值进行排序。例如:

str_list = ["apple", "banana", "orange", "grape"]
str_list.sort()
print(str_list)

输出结果为:

['apple', 'banana', 'grape', 'orange']

从输出结果可以看出,sort()函数默认按照字符串的ASCII码值进行升序排序。

如果我们想按照字符串的长度进行排序,可以使用key参数。例如:

str_list = ["apple", "banana", "orange", "grape"]
str_list.sort(key=lambda x: len(x))
print(str_list)

输出结果为:

['apple', 'grape', 'banana', 'orange']

从输出结果可以看出,sort()函数按照字符串的长度进行升序排序,lambda表达式指定了按照字符串的长度作为排序规则。

除此之外,我们还可以使用sort()函数对自定义的对象进行排序。例如,我们有一个学生对象,包含姓名(name)、年龄(age)和分数(score)三个属性。我们可以定义一个类来表示学生对象:

class Student:
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    def __repr__(self):
        return f"{self.name}, {self.age}, {self.score}"

其中,__repr__()方法用于定义对象的字符串表示形式,这里返回一个字符串,包含学生对象的姓名、年龄和分数属性。

接下来,我们创建一个包含多个学生对象的列表,可以使用sort()函数按照学生对象的分数属性进行排序。例如:

stu_list = [Student(name="Tom", age=20, score=90),
            Student(name="John", age=19, score=85),
            Student(name="Mary", age=21, score=92),
            Student(name="Peter", age=22, score=88)]

stu_list.sort(key=lambda x: x.score, reverse=True)
print(stu_list)

输出结果为:

[Mary, 21, 92, Tom, 20, 90, Peter, 22, 88, John, 19, 85]

从输出结果可以看出,sort()函数按照学生对象的分数属性进行逆序排序,lambda表达式指定了按照学生对象的分数属性作为排序规则。

需要注意的是,sort()函数是对当前列表进行排序的,如果希望对列表进行排序但不修改原列表,可以使用sorted()函数。例如:

num_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
new_list = sorted(num_list)
print(new_list)
print(num_list)

输出结果为:

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

从输出结果可以看出,sorted()函数返回一个新的排好序的列表,原列表并没有被更改。

综上所述,sort()函数是一个非常实用的函数,可以对Python中的列表元素进行排序。需要注意的是,在使用sort()函数时需要注意排序规则的定义,如果要自定义排序规则,可以使用lambda表达式或定义一个函数。