PYTHON : lambda函数与map、filter和reduce等函数式

目录

lambda函数简介

lambda函数和map结合

        1. 将列表中的每个元素加倍:

        2. 将字符串列表中的每个字符串转换为大写:

        3. 计算列表中每个元素的平方:

        4. 提取列表中每个字符串的长度:

        5. 将数字列表转换为字符串列表:

lambda函数和filter结合

        1. 筛选出列表中的偶数:

        2. 筛选出字符串列表中长度大于等于5的字符串:

        3. 筛选出包含字母"E"的字符串:

        4. 筛选出列表中的正数:

        5. 筛选出字典中值大于等于5的项:

lambda函数和reduce结合

总结:常见的函数和lambda函数组合使用的示例:

lambda函数

map函数

filter函数

reduce函数


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}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值