Lambda 表达式
Python 的 lambda 函数是一种简化的函数定义方式,可以在不定义函数的情况下直接使用。语法格式:
lambda arguments: expression
其中 arguments 为参数列表,expression 为函数体。一个求平方的 lambda 函数:
square = lambda x: x**2
print(square(5)) # 25
lambda 函数通常用于高阶函数中,如 map、filter、sorted 等。
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
print(list(squared_numbers)) # [1, 4, 9, 16, 25]
sort 的 key
sort 方法的 key 参数可以接受一个函数作为参数,这个函数会对序列中的每个元素进行计算,并用计算结果来排序。这个函数可以是一个普通函数,也可以是一个 lambda 函数。
使用一个 lambda 函数来对字符串列表按照字符串长度排序:
words = ["apple", "banana", "cherry", "date"]
words.sort(key=lambda x: len(x))
print(words) # ['date', 'cherry', 'apple', 'banana']
如果使用一个普通函数来做 key,那么这个函数必须接受一个参数,并返回一个值,sort 方法会使用这个值来排序,如下:
def get_length(word):
return len(word)
words.sort(key=get_length)
print(words) # ['date', 'cherry', 'apple', 'banana']
因为 lambda 函数的语法简单,并且只有一行代码,所以在这种情况下使用 lambda 函数可以让代码更简洁。