CodeGym /课程 /Python SELF ZH /列表排序

列表排序

Python SELF ZH
第 7 级 , 课程 8
可用

8.1 列表排序

在 Python 中排序列表是一个重要的操作,可以让数据更方便分析或展示。Python 提供了几种排序列表的方法,根据不同的需求和结果的要求,这些方法都能派上用场。

方法 sort()

方法 sort() 会在原地对列表进行排序,也就是说它会修改原来的列表。它非常高效,并且可以通过参数来调整排序方式。


numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # 输出 [1, 2, 5, 9] 

你可以通过设置参数 reverse=True 来把列表按逆序排序。


numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)  # 输出 [9, 5, 2, 1]

函数 sorted()

函数 sorted() 会创建一个新的列表,这个新列表是原列表的排序版本。原列表不会被改变,这在你需要保留原数据时特别方便,所以往往选择用 sorted()


numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出 [1, 2, 5, 9]
print(numbers)  # 原列表未改变 [5, 2, 9, 1]

要记住,sort() 会改变原始列表,而 sorted() 会返回一个新的排序后的列表,保持原始列表不变。如果你需要对数据就地修改,使用 sort();如果你想保持数据的原始顺序,使用 sorted()

8.2 按键排序

有时候你可能需要复杂的排序方案,或者忽略某些参数来排序。在这种情况下,“按键排序”就可以派上用场。你需要在 sort() 方法或 sorted() 函数中传入一个特殊的参数 —— key

作为 key 参数的值,你需要传入一个在比较元素时要用的函数。

忽略大小写的字符串比较

所有字符串在比较前都会转成小写


alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist)  # 输出 ['banana', 'cherry', 'Kiwi', 'Orange']

排序包含元组的列表的例子

假设你有一个学生名单,每个元素是一个包含学生姓名和成绩的元组 (tuple)。你想要通过学生的成绩来排序:


students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]

def get_grade(student):
    return student[1]
            
students.sort(key=get_grade)
print(students)  # 输出 [('Bob', 75), ('Alice', 88), ('Carol', 96)]

排序包含字典的列表的例子

或者你有一个字典列表,每个字典包含学生的信息。为了按成绩对它们进行排序,你需要写这样的代码:


students = [
    {'name': 'Alice', 'grade': 88},
    {'name': 'Bob', 'grade': 75},
    {'name': 'Carol', 'grade': 96}
]
        
def get_grade(student):
    return student['grade']
        
sorted_students = sorted(students, key=get_grade)
print(sorted_students)  # 输出 [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION