本文正在参加「Python主题月」,详情查看 活动链接
概述
Python 包含许多预定义的内置函数,最终用户可以通过简单地调用它们来使用它们。这些功能不仅使程序员的工作更轻松,而且有助于建立一个通用的编码环境。在本教程中,您将了解 Python 的三个最强大的函数:map()、filter() 和 reduce()。
函数式编程的三大支柱是 map、filter 和 reduce 函数。虽然 Python 不完全是一种函数式编程语言,但它确实有很多特性使它如此。本文讨论了 Python 中的 map、filter 和 reduce 函数,以及它们如何对应于函数式编程原则。
函数式编程
使用函数来定义计算的编程范式称为函数式编程。不可更改状态的概念是函数式编程的关键定义特征之一。
计算是通过命令式编程中的语句完成的,这可以说是您已经熟悉的最流行的编程范式。这些命令会影响变量的值,从而影响执行后的计算状态。例如,for 循环可以重复执行一条语句,每次更改变量的值,如下所示:
counter = 0
for i in range(10):
counter += 1
在循环的每次迭代中,计数器的值每次增加 1 时,计算状态都会发生变化,使其更接近结束状态。
在我们讨论 Python 中的“map()”、“filter()”和“reduce()”函数的示例之前,我们需要了解另一个概念:高阶函数。
高阶函数
在函数式编程中,高阶函数是我们定义计算的主要工具。这些是将函数作为参数并返回函数作为结果的函数。Reduce()、map() 和 filter() 是 Python 中最有用的三个高阶函数。当与更简单的功能配对时,它们可用于执行复杂的操作。
下面的代码示例演示了一个高阶函数。print greeting() 接受两个参数:函数 f 和名称 n,并返回调用 f 的结果。(n)。
def greet(name):
return "Hello, {}!".format(name)
def print_greeting(f, n):
print(f(n))
匿名函数
我们在上一节中看到了一个将另一个函数作为参数的函数示例。函数 map()、filter() 和 reduce() 都做同样的事情:它们每个都接受一个函数和一个元素列表,然后返回将函数应用于列表中每个元素的结果。
如前所述,Python 具有内置函数,如 map()、filter() 和 reduce()。Python 的函数式编程特性是通过这些函数启用的。在函数式编程中,唯一决定输出的因素是传入的输入。这些函数可以接受任何其他函数作为参数,也可以作为参数传递给其他函数。现在让我们更详细地了解这些函数中的每一个。
我们有三个主要功能:
- 地图()
- 筛选()
- 减少()
1.map() 函数:
map() 函数是一个高阶函数。如前所述,此函数接受另一个函数和一系列“可迭代对象”作为参数,并在将函数应用于序列中的每个可迭代对象后提供输出。它具有以下语法:
语法: 映射(函数,可迭代对象)
该函数用于定义一个表达式,然后将其应用于“可迭代对象”。用户定义函数和 lambda 函数都可以发送到 map 函数。
用户定义的函数可以发送到 map() 方法。用户或程序员是唯一可以更改这些函数参数的人。
例子
def function(a):
return a*a
x = map(function, (1,2,3,4)) #x是地图对象
print(x)
print(set(x))
输出
{16, 1, 4, 9}
x 是一个地图对象,如您所见。接下来显示 map 函数,它以“function()”为参数,然后将“a * a”应用于所有 'iterables'。结果,所有可迭代对象的值在返回之前都与它们自身相乘。
让我们看看如何在 map() 方法中使用 lambda 函数。
map() 函数中的 Lambda:
没有名称的函数称为 lambda 函数。这些函数经常用作其他函数的输入。让我们尝试将 Lambda 函数集成到 map() 函数中。
例子
tup= (5, 7, 22, 97, 54, 62, 77, 23, 73, 61)
newtuple = tuple(map(lambda x: x+3 , tup))
print(newtuple)
输出
(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)
2.filter()函数:
filter() 函数用于生成在调用该函数时返回 true 的值的输出列表。它具有以下语法:
语法: 过滤器(函数,可迭代对象)
这个函数和 map() 一样,可以接受用户定义的函数和 lambda 函数作为参数。
例子
def func(x):
如果 x>=3:
return x
y = filter(func, (1,2,3,4))
print(y)
print(list(y))
输出
[3, 4]
如您所见,y 是过滤器对象,列表是条件 (x>=3) 的真值集合。
filter() 函数中的 Lambda:
要检查的条件由作为参数提供的 lambda 函数定义。
例子
y = filter(lambda x: (x>=3), (1,2,3,4))
打印(列表(y))
输出
[3, 4]
3.reduce() 函数:
顾名思义,reduce() 函数将提供的函数应用于“可迭代对象”并返回单个值。
语法: reduce(function, iterables)
该函数指定在这种情况下应将哪个表达式应用于“可迭代对象”。必须使用功能工具模块来导入此功能。
例子
from functools import reduce
reduce(lambda a,b: a+b,[23,21,45,98])
输出
187
前面示例中的 reduce 函数将列表中的每个可迭代对象一一添加并返回单个结果。
Python 函数 map()、filter() 和 reduce() 都可以一起使用。
🍺 快速总结——Python中强大的函数: map()、filter() 和 reduce()
所以,这篇关于 Python 中的 map()、filter() 和 reduce 函数的文章。我希望你已经清楚地了解了一切。确保你在 map()、filter() 和 reduce() 上练习,因为这个函数在我们使用 python 进行数据分析时非常有用。
如果您喜欢这篇文章并有兴趣看到更多此类文章,可以看看这里,这里汇总了我的全部原创及作品源码:
🧵 更多相关文章
- Python 关键字、标识符和变量|Python 主题月
- Python 语句、表达式和缩进|Python 主题月
- 如何在 Python 中编写注释和多行注释|Python 主题月
- Python 数据类型——从基础到高级学习|Python 主题月
- 100 个基本 Python 面试问题第一部分(1-20)|Python 主题月
- 100 个基本 Python 面试问题第二部分(21-40)|Python 主题月
- 100 个基本 Python 面试问题第三部分(41-60)|Python 主题月
- 100 个基本 Python 面试问题第四部分(61-80)|Python 主题月
- 100 个基本 Python 面试问题第五部分(81-100)|Python 主题月
- 30 个 Python 教程和技巧|Python 主题月
往日优秀文章推荐:
- 教你用Java做出一个五子棋小游戏
- 用一种有趣的方式谈谈 JavaScript 的发展历史 ⌛
- 【Java练习题】Java程序的输出 | 第七套(含解析)
- ❤️5 个使重构变得容易的 VS Code 扩展❤️(建议收藏)
- 有人说,如果你的眼中有光,所到之处皆是光明 | 2021年中总结
- 14万字 | 400 多道 JavaScript 面试题 🎓 有答案 🌠(第五部分 371-424题)
如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。🤗最后,不要忘了❤或📑支持一下哦