📅  最后修改于: 2023-12-03 15:19:00.835000             🧑  作者: Mango
Python中的sorted()
函数是一个非常有用的函数,可以用于对数据进行排序并返回一个新的排序列表。在这个过程中,lambda表达式可以被用于指定排序规则。下面详细介绍这两个概念。
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表达式的简单使用示例:
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中更加灵活和高效地完成常见的编程任务。