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

列表排序函数-sort()函数使用方法

发布时间:2023-11-18 18:24:22

sort()函数是Python内置的列表排序函数,用于按照指定的方式对列表进行排序。它会直接修改原始列表,而不是返回一个新的排序后的列表。sort()函数有两个可选参数:reverse(默认为False)和key(默认为None)。reverse参数是一个布尔值,当设置为True时,列表将按照降序排序;当设置为False时,列表将按照升序排序。key参数是一个函数,用于指定排序的关键字。下面是sort()函数的使用方法:

1.简单排序

如果列表中的元素都是同一种数据类型(比如都是整数或都是字符串),可以直接使用sort()函数进行排序。例如,有一个整数列表nums:

nums = [4, 3, 1, 2, 5]

可以使用sort()函数按照升序排序:

nums.sort()

print(nums)  # 输出:[1, 2, 3, 4, 5]

如果要按照降序排序,可以设置reverse参数为True:

nums.sort(reverse=True)

print(nums)  # 输出:[5, 4, 3, 2, 1]

2.自定义排序

如果要按照列表中的某个属性或规则进行排序,可以使用key参数来指定排序的关键字。key参数需要传入一个函数,该函数接受一个参数(列表中的元素),并返回一个用于比较的值。

例如,有一个字符串列表words,要按照单词的长度进行排序:

words = ["apple", "banana", "carrot"]

可以定义一个函数来获取单词的长度,并将这个函数作为key参数传入sort()函数:

def get_length(word):

    return len(word)

words.sort(key=get_length)

print(words)  # 输出:['apple', 'carrot', 'banana']

3.多字段排序

如果列表中的元素是复杂的对象,可以使用lambda函数来指定多个字段进行排序。lambda函数是一种匿名函数,可以用简短的语法定义。

例如,有一个学生对象的列表students,每个学生对象包含姓名和年龄属性,要按照年龄升序排序,如果年龄相同,按照姓名升序排序:

class Student:

    def __init__(self, name, age):

        self.name = name

        self.age = age

        

students = [

    Student("Alice", 18),

    Student("Bob", 21),

    Student("Charlie", 18),

    Student("David", 20)

]

students.sort(key=lambda student: (student.age, student.name))

for student in students:

    print(student.name, student.age)

# 输出:

# Alice 18

# Charlie 18

# David 20

# Bob 21

在lambda函数中,按照先后顺序指定多个字段进行排序,如果 个字段相同,则比较第二个字段,依次类推。

4.其他注意事项

sort()函数只能用于可变的列表类型,不能用于不可变的元组类型。如果对元组进行排序,可以使用内置的sorted()函数,它会返回一个新的排序后的列表。

sort()函数是原地排序,会直接修改原始列表,而不是返回一个新的排序后的列表。如果需要保留原始列表,可以通过复制一份列表来进行排序,例如sorted_list = original_list[:]。

以上是sort()函数的使用方法,通过合理地设置reverse和key参数可以实现不同的排序需求。在实际应用中,可以根据具体的情况来选择合适的方式对列表进行排序。