📜  python sorted lambda - Python (1)

📅  最后修改于: 2023-12-03 15:19:00.835000             🧑  作者: Mango

Python中的sorted函数和lambda表达式

Python中的sorted()函数是一个非常有用的函数,可以用于对数据进行排序并返回一个新的排序列表。在这个过程中,lambda表达式可以被用于指定排序规则。下面详细介绍这两个概念。

sorted函数

sorted(iterable, *, key=None, reverse=False) → list

这是sorted()函数的定义。它可接收一个可迭代对象作为输入,返回一个排过序的列表。我们来看一些实际例子:

numbers = [4, 2, 3, 1, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)

上述代码可以对一个整数列表进行升序排列。输出结果为

[1, 2, 3, 4, 5, 6]

这里没有传入key参数,所以默认使用元素的自然排序。

接下来,我们看一个更加复杂的例子,假设有一个字符串列表,希望按字符串中元音字母的数量进行排序。

words = ['apple', 'cat', 'dog', 'banana', 'orange']
sorted_words = sorted(words, key=lambda s: sum(1 for c in s if c in 'aeiou'))
print(sorted_words)

输出结果为:

['cat', 'dog', 'apple', 'banana', 'orange']

其中,我们传入了一个lambda表达式作为key参数。这个表达式会统计每个字符串中元音字母的数量,并将其作为排序的依据。

lambda表达式

在上面的例子中,我们发现lambda表达式非常有用。它可以用作匿名函数(也被称为函数字面量),并在程序中灵活使用。下面是一个lambda表达式的简单使用示例:

f = lambda x, y : x + y
print(f(1, 2))

输出结果为:

3

实际上,我们也可以将lambda表达式传递给sorted()函数,它用于指定排序规则。

words = ['apple', 'cat', 'dog', 'banana', 'orange']
sorted_words = sorted(words, key=lambda s: sum(1 for c in s if c in 'aeiou'))
print(sorted_words)

在这个例子中,key参数通过一个lambda表达式将字符串中的元音字母数量作为依据进行排序。

我们可以用lambda表达式来筛选排序的结果。例如,假设有一个列表包含t恤衫的颜色和价格,我们可以使用lambda表达式按价格对t恤衫进行排序,然后选取价格最高的t恤衫的颜色。

shirts = [
    {'color': 'red', 'price': 20}, 
    {'color': 'blue', 'price': 10},
    {'color': 'green', 'price': 15},
    {'color': 'yellow', 'price': 40},
    {'color': 'purple', 'price': 30}
]

most_expensive = sorted(shirts, key=lambda s: s['price'])[-1]['color']
print(most_expensive)

这个lambda表达式按字典中'shirts'列表中每个元素的价格进行排序,并返回价格最高的元素。最后,我们使用字典键'color'来提取颜色。

通过对sorted()函数和lambda表达式进行学习,我们可以在Python中更加灵活和高效地完成常见的编程任务。