乐闻世界logo
搜索文章和话题

How to sort with a lambda?

2 个月前提问
2 个月前修改
浏览次数17

1个答案

1

在Python中,我们可以使用lambda函数来简化排序操作。lambda是一种小的匿名函数,它基于提供的表达式快速定义函数。在排序时,我们通常与sorted()函数或列表的sort()方法结合使用lambda来指定排序的键(key)。

例子 1:使用sorted()lambda对列表排序

假设我们有一个整数列表,我们想根据数字的绝对值进行排序。

python
numbers = [-5, -2, 0, 1, 3, 4] sorted_numbers = sorted(numbers, key=lambda x: abs(x)) print(sorted_numbers)

输出将会是:

shell
[0, 1, -2, 3, 4, -5]

这里,lambda x: abs(x)定义了一个匿名函数,它接受x作为输入并返回x的绝对值。这个返回值用作排序的键。

例子 2:使用sort()lambda对包含元组的列表进行排序

假设我们有一个包含学生姓名和成绩的列表,我们想根据成绩(降序)对学生信息进行排序。

python
students = [("Alice", 88), ("Bob", 70), ("Dave", 92), ("Carol", 78)] students.sort(key=lambda student: student[1], reverse=True) print(students)

输出将会是:

shell
[('Dave', 92), ('Alice', 88), ('Carol', 78), ('Bob', 70)]

在这个例子中,lambda student: student[1]创建了一个函数,该函数取一个学生的元组(例如("Alice", 88))并返回其成绩(例如88)。设置reverse=True使得列表按成绩降序排序。

例子 3:结合使用lambda和其他函数

我们也可以在lambda中结合使用其他函数,比如字符串的lower()方法,来实现不区分大小写的字符串排序。

python
names = ["alice", "Bob", "dave", "Carol"] names.sort(key=lambda name: name.lower()) print(names)

输出将会是:

shell
['alice', 'Bob', 'Carol', 'dave']

这里,lambda name: name.lower()确保排序时忽略字符串的大小写。

通过这些例子,我们可以看到使用lambda进行排序是非常灵活且强大的。它让我们能够定义复杂的排序逻辑,而只需少量的代码。

2024年7月16日 14:22 回复

你的答案