原文地址(https://zhuanlan.zhihu.com/p/114787201)
作为21世纪最流行的语言之一,Python有很多有趣的功能值得深入探索和研究。今天将讨论其中的三个你可能没听说过的函数,将从理论和实际应用两方面为你详细讲解。
我之所以要讨论这些函数,主要是因为它们可以帮助你避免陷入编写循环中。在某些情况下,循环的运行成本很高,除此之外,这些函数还有助于提高速度。
以下是本文将介绍以下三个函数:
- map()
- filter()
- reduce()
即使你以前听说过这些函数,但是通过我列出的这些理论和例子来强化你的知识储备也没有坏处。
所以,不需要你花费太多的精力来整理,我都给你准备好啦!
一.map()
map()函数的作用是:将另一个函数作为参数,与某种数组放在一起。其思想是将函数(作为参数传入的函数)应用于数组中的每一项。
这有两个原因:
- 你不需要写循环
- 比循环还快
让我们看看它的实际效果。我将声明一个名为 num_func()的函数,该函数以一个数字作为参数。这个数字是平方的,除以2,然后返回。注意,操作是任意选择的,你可以在函数中执行任何你想要的操作:
现在让我们声明一个要应用 num_func()的数字数组。请注意,map()本身将返回一个 map 对象,因此你需要将其转换为一个列表:
这个过程成功完成了,这里没有什么突破性的东西,但是尽可能避免循环是件好事。
二.filter()
这是另一个很好的函数,它可以节省你的时间,包括编写和执行。顾名思义,这个想法是只将满足特定条件的项保留在数组中。
与 map()一样,我们可以预先声明函数,然后将其传递到 iterable 列表旁边的 filter()。
让我们看看这个动作。我已经声明了一个名为 more_than_15()的函数,顾名思义,如果作为参数给定的项大于15,它将返回True:
接下来,我们声明一个数字数组,并将其作为 filter()函数中的第二个参数传递:
如图所示,只有三个值满足给定条件。
三.reduce()
reduce()与前两个函数有点不同。首先,我们必须从functools模块进行导入。这背后的主要思想是,它将把一个给定的函数应用于项数组,并因此返回一个值。
最后一部分很关键-reduce()不会返回一个项数组,它总是返回一个值。让我们看一个图表,使这个概念具体化。
下面是在图表不完全清楚的情况下写出的逻辑:
- 5加10等于15
- 15加上12,结果是27
- 27加上18,结果是45
- 45加上25,结果是70
70是返回的值。首先从代码实现开始,让我们从 functools 模块导入 reduce 函数,并声明一个返回两个数字之和的函数:
现在,我们可以在代码中重新查看图表,并验证所有内容是否正常工作:
当然,这只是展示这些函数工作原理的最简单的例子,肯定还有其他方法可以对列表中的项目进行汇总。
四.最后
希望你能在日常生活中利用这三个功能!速度的提高可能不是很大,这取决于你处理的数据量,但是代码能在更少的循环下看起来会更好。
如果你有其他的例子,不要犹豫!在评论区分享给我们吧!
--END--
翻译:未艾信息(http://www.weainfo.net)
查看更多最新资讯,欢迎大家点击上方链接登录我们的AI社区。
以及关注我们的公众号:为AI呐喊(weainahan)