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

Python列表sort()函数的用法

发布时间:2023-06-23 02:16:23

在Python中,列表是一种非常常见的数据结构,用来存储一组数据。Python列表可以包含多种数据类型,并且可以通过索引进行访问和修改,十分灵活。sort()函数是Python列表中的一个函数,用来对列表进行排序。本文将详细介绍Python列表sort()函数的用法。

sort()函数定义和语法

sort()函数是Python列表的一个内置方法,用来对列表进行排序。它的语法如下:

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

参数说明:

- key:排序依据的函数,可以使用自定义函数,也可以使用Python内置的函数。

- reverse:是否要进行降序排序,默认为False,即升序排列。

sort()函数使用方法

下面是sort()函数的使用方法:

1. 对数字列表进行排序

对数字列表进行排序是sort()函数最常见的用法。下面是一个简单的例子:

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

在这个例子中,我们创建了一个数字列表numbers,然后使用sort()函数对其进行排序。由于没有指定排序依据的函数,所以sort()函数默认使用数字大小作为排序依据,将列表从小到大进行排序。

2. 对字符串列表进行排序

sort()函数也可以对字符串列表进行排序,例如:

words = ["apple", "banana", "orange", "pear", "grape"]
words.sort()
print(words)  # ['apple', 'banana', 'grape', 'orange', 'pear']

在这个例子中,我们创建了一个字符串列表words,然后使用sort()函数对其进行排序。由于没有指定排序依据的函数,所以sort()函数默认使用字符串的大小写字母顺序作为排序依据,将列表从小到大进行排序。

3. 对列表中的元素进行自定义排序

如果想要对列表中的元素进行自定义排序,就需要使用key参数。例如,我们要对一个包含多个元组的列表进行排序,并指定排序的依据为元组中第二个元素,可以这样做:

students = [("Tom", 20), ("Jack", 18), ("Lucy", 19), ("Mary", 22), ("Mike", 21)]
students.sort(key=lambda x: x[1])
print(students)
# [('Jack', 18), ('Lucy', 19), ('Tom', 20), ('Mike', 21), ('Mary', 22)]

在这个例子中,我们创建了一个学生列表students,其中每一个元素是一个包含两个元素的元组, 个元素是学生的姓名,第二个元素是学生的年龄。然后我们使用sort()函数对学生列表进行排序,并指定排序依据为每个元组中的第二个元素(即学生的年龄),并使用了一个lambda表达式来定义排序依据。

4. 对列表中元素的属性进行排序

在Python中,也可以使用object.attribute的形式来获取一个对象的属性值,这个特性在对类对象进行排序时特别有用。例如,我们定义一个Person类,其中有name和age属性,并创建了一个列表p_list,包含了多个Person对象,我们可以通过sort()函数,以Person对象的age属性值作为排序依据来对列表进行排序:

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

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


p1 = Person("Tom", 20)
p2 = Person("Jack", 18)
p3 = Person("Lucy", 19)
p4 = Person("Mary", 22)
p5 = Person("Mike", 21)
p_list = [p1, p2, p3, p4, p5]

p_list.sort(key=lambda p: p.age)
print(p_list)
# [Jack:18, Lucy:19, Tom:20, Mike:21, Mary:22]

在这个例子中,我们定义了一个Person类,其中有name和age两个属性。然后创建了一个包含多个Person对象的列表p_list,并使用sort()函数对其进行排序。sort()函数中的key参数使用了一个lambda表达式,以Person对象的age属性值作为排序依据。

5. 对列表进行降序排列

在默认情况下,sort()函数对列表进行升序排列,如果要进行降序排列,需要将reverse参数设置为True。例如:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort(reverse=True)
print(numbers)  # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

在这个例子中,我们创建了一个数字列表numbers,并使用sort()函数对其进行降序排列。

总结

通过本文的讲解,我们了解了Python列表sort()函数的基本用法。sort()函数是Python列表的一个内置方法,用来对列表进行排序。它的语法非常简单,使用起来也十分方便。sort()函数不仅可以对数字和字符串列表进行排序,还可以对列表中元素的属性进行排序,满足了不同场景下的排序需求。