lambda 是 Python 中的一个简单的匿名函数,常常和 Python 内置函数 filter、reduce、map 等结合使用,可以快速简便地完成一些操作。
filter() 函数可以用于过滤序列中不符合条件的元素,通常结合 lambda 函数使用,例如过滤出列表中的偶数:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = list(filter(lambda x: x % 2 == 0, nums))
print(even_nums) # [2, 4, 6, 8, 10]
reduce() 函数可以用于对序列中的元素进行累积操作,通常结合 lambda 函数使用,例如求列表中所有元素的和:
from functools import reduce
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sum = reduce(lambda x, y: x + y, nums)
print(sum) # 55
map() 函数可以对序列中的元素进行操作,通常结合 lambda 函数使用,例如将列表中的元素都平方:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
squared_nums = list(map(lambda x: x ** 2, nums))
print(squared_nums) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
除了这些函数,还有一些 Python 内置函数可以结合 lambda 函数使用,例如 sorted() 函数可以对列表进行排序,也可以结合 lambda 函数指定排序规则:
words = ['apple', 'banana', 'cherry', 'date']
sorted_words = sorted(words, key=lambda x: x[1])
print(sorted_words) # ['date', 'cherry', 'banana', 'apple']
还有一些其他的函数,例如 zip() 函数可以将多个序列中的元素依次配对,enumerate() 函数可以将一个序列中的元素和它们的下标配对,这些函数也可以结合 lambda 函数使用。
结合 lambda
函数使用,zip()
函数可以快速将多个序列中的元素进行对应操作,enumerate()
函数可以快速遍历序列中的元素并获取它们的下标。下面是一个结合 lambda
函数使用的示例:
# zip() 函数结合 lambda 函数使用
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
result = list(map(lambda x, y, z: x + y + z, a, b, c))
print(result) # 输出 [12, 15, 18]
# enumerate() 函数结合 lambda 函数使用
a = ['apple', 'banana', 'orange']
result = list(map(lambda x: x[0] + ': ' + x[1], enumerate(a)))
print(result) # 输出 ['0: apple', '1: banana', '2: orange']
在上面的例子中,zip()
函数将三个列表中的元素依次配对,然后使用 lambda
函数将对应位置上的元素相加,得到了一个新的列表。enumerate()
函数遍历了列表 a
中的元素,并将它们的下标和元素配对,然后使用 lambda
函数将它们格式化为字符串。最后,使用 map()
函数将 lambda
函数应用到每个配对上,得到了一个新的列表。