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

手把手教你使用Python中的sorted()函数对列表进行排序。

发布时间:2023-06-04 05:11:12

Python中的列表排序通常使用sorted()函数来实现。sorted()函数默认按照从小到大的顺序排序,同时支持自定义排序方法。

1. 对于简单的数字或字符串列表,可以直接使用sorted()函数进行排序。

例如:

nums = [6, 2, 9, 3, 1]
sorted_nums = sorted(nums)
print(sorted_nums)
# 输出结果为 [1, 2, 3, 6, 9]

words = ['apple', 'cat', 'book', 'dog']
sorted_words = sorted(words)
print(sorted_words)
# 输出结果为 ['apple', 'book', 'cat', 'dog']

2. 对于复杂数据类型的列表,可以使用sorted()函数的key参数进行排序。

例如,对于一个学生信息列表students,它的每个元素包含学生姓名name和学生成绩score,我们可以按照学生成绩从高到低对列表进行排序。

students = [{'name': 'Tom', 'score': 90}, {'name': 'Alice', 'score': 80}, {'name': 'Bob', 'score': 95}]
sorted_students = sorted(students, key=lambda s: s['score'], reverse=True)
print(sorted_students)
# 输出结果为 [{'name': 'Bob', 'score': 95}, {'name': 'Tom', 'score': 90}, {'name': 'Alice', 'score': 80}]

在这个例子中,使用了lambda函数定义了一个以学生成绩为排序依据的key函数,并设置reverse=True实现从高到低排序。

3. 对于自定义复杂排序,可以使用sorted()函数的cmp参数进行排序。

例如,我们可以按照学生成绩和姓名的字典序进行排序。

students = [{'name': 'Tom', 'score': 90}, {'name': 'Alice', 'score': 80}, {'name': 'Bob', 'score': 95}]
def cmp_student(s1, s2):
    if s1['score'] == s2['score']:
        return cmp(s1['name'], s2['name'])
    else:
        return cmp(s1['score'], s2['score'])

sorted_students = sorted(students, cmp=cmp_student)
print(sorted_students)
# 输出结果为 [{'name': 'Alice', 'score': 80}, {'name': 'Tom', 'score': 90}, {'name': 'Bob', 'score': 95}]

在这个例子中,定义了一个cmp_student函数作为自定义排序方法,并将其作为cmp参数传递给sorted()函数。

总体来说,sorted()函数是Python中列表排序的常用函数,灵活可控,可以完成各种排序需求。需要注意的是,sorted()函数返回一个新的排序后的列表,原列表不会被改变。