目录
lambda函数简介
lambda函数是由数学家阿隆佐·丘奇(Alonzo Church)在 20 世纪 30 年代提出的,后来被引入到编程语言中。lambda函数是一种匿名函数,可以在需要函数的地方使用,并且通常用于简单的函数操作。
lambda函数的主要用途是在需要一个函数,但又不想费力定义一个完整的函数时使用。它通常用于某些函数式编程的场景,例如在函数式编程语言中或者在Python等支持函数式编程的语言中经常会用到lambda函数。以下是lambda函数的一个简单示例,在Python中使用lambda函数创建一个简单的加法函数:
add = lambda x, y: x + y
print(add(3, 5)) # 输出:8
在这个例子中,`lambda x, y: x + y` 定义了一个接受两个参数 x 和 y,返回它们的和的匿名函数。然后我们使用这个lambda函数将3和5相加。
lambda函数通常与map、filter和reduce等函数式编程工具一起使用。下面是它们的基本用法:
lambda函数和map结合
map函数:map函数接受一个函数和一个可迭代对象作为参数,它将函数应用于可迭代对象的每个元素,并返回一个包含结果的迭代器。 当使用lambda函数和map结合时,可以进行各种简洁的数据转换和处理。以下是5个示例:
1. 将列表中的每个元素加倍:
nums = [1, 2, 3, 4, 5]
doubled_nums = list(map(lambda x: x * 2, nums))
print(doubled_nums) # 输出:[2, 4, 6, 8, 10]
2. 将字符串列表中的每个字符串转换为大写:
words = ["apple", "banana", "cherry"]
upper_words = list(map(lambda x: x.upper(), words))
print(upper_words) # 输出:['APPLE', 'BANANA', 'CHERRY']
3. 计算列表中每个元素的平方:
nums = [1, 2, 3, 4, 5]
squared_nums = list(map(lambda x: x**2, nums))
print(squared_nums) # 输出:[1, 4, 9, 16, 25]
4. 提取列表中每个字符串的长度:
words = ["apple", "banana", "cherry"]
word_lengths = list(map(lambda x: len(x), words))
print(word_lengths) # 输出:[5, 6, 6]
5. 将数字列表转换为字符串列表:
nums = [1, 2, 3, 4, 5]
str_nums = list(map(lambda x: str(x), nums))
print(str_nums) # 输出:['1', '2', '3', '4', '5']
lambda函数和filter结合
filter函数:filter函数接受一个函数和一个可迭代对象作为参数,它使用函数来筛选可迭代对象中的元素,并返回一个包含符合条件的元素的迭代器。当使用lambda函数和filter结合时,可以根据特定条件筛选和过滤数据。以下是5个示例:
1. 筛选出列表中的偶数:
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]
2. 筛选出字符串列表中长度大于等于5的字符串:
words = ["apple", "banana", "cherry", "date", "elderberry"]
long_words = list(filter(lambda x: len(x) >= 5, words))
print(long_words) # 输出:['apple', 'banana', 'cherry', 'elderberry']
3. 筛选出包含字母"E"的字符串:
words = ["apple", "banana", "cherry", "date", "elderberry"]
e_words = list(filter(lambda x: 'e' in x.lower(), words))
print(e_words) # 输出:['apple', 'date', 'elderberry']
4. 筛选出列表中的正数:
numbers = [5, -3, 8, -2, 0, -7, 10]
positive_nums = list(filter(lambda x: x > 0, numbers))
print(positive_nums) # 输出:[5, 8, 10]
5. 筛选出字典中值大于等于5的项:
data = {'a': 3, 'b': 6, 'c': 2, 'd': 8, 'e': 4}
filtered_data = dict(filter(lambda x: x[1] >= 5, data.items()))
print(filtered_data) # 输出:{'b': 6, 'd': 8}

最低0.47元/天 解锁文章
380






