手把手教你使用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()函数返回一个新的排序后的列表,原列表不会被改变。
