共计 1157 个字符,预计需要花费 3 分钟才能阅读完成。
动动发财的小手,点个赞吧!
作为 21 世纪最风行的语言之一,Python 当然有很多乏味的性能值得深刻摸索和钻研。明天将介绍其中的三个,每个都从实践上和通过理论示例进行介绍。
我想要介绍这些函数的次要起因是它们能够帮忙您防止编写循环。在某些状况下,循环的运行老本可能很高,除此之外,这些函数将有助于进步速度。
以下是本文将涵盖的性能:
map()
filter()
reduce()
即便您以前据说过这些性能,通过更多的实践和示例来增强您的常识也没有什么害处。
因而,事不宜迟,让咱们开始吧!
map
map() 函数承受另一个函数作为参数,以及某种数组。这个想法是将一个函数(作为参数传入的函数)利用于数组中的每个我的项目。
这派上用场有两个起因:
- 你不用写一个循环
- 它比循环更快
让咱们看看它的实际效果。我将申明一个名为 num_func() 的函数,它将一个数字作为参数。该数字被平方并除以 2 并原样返回。请留神,操作是任意抉择的,您能够在函数内做任何您想做的事件:
当初让咱们申明一个数字数组,咱们要在其上利用 num_func()。请留神 map() 自身将返回一个地图对象,因而您须要将其转换为列表:
仿佛该过程已胜利实现。这里没有什么开创性的,但尽可能防止循环是一件坏事。
filter
这是另一个能够节俭您工夫的不错的函数——无论是在编写还是在执行上。顾名思义,这个想法是只将满足特定条件的我的项目保留在数组中。
就像 map() 一样,咱们能够事后申明函数,而后将它与可迭代列表一起传递给 filter()。
让咱们看看这个在口头中。我曾经申明了一个名为 more_than_15() 的函数,顾名思义,如果作为参数给出的我的项目大于 15,它将返回 True:
接下来,咱们申明一个数字数组并将它们作为第二个参数传递给 filter() 函数:
正如预期的那样,只有三个值满足给定条件。再一次,这里没有什么开创性的,但看起来比循环好得多。
reduce
当初 reduce() 与前两个有点不同。首先,咱们必须从 functools 模块中导入它。这背地的次要思维是它将给定的函数利用于我的项目数组并返回单个值作为后果。
最初一部分很要害——reduce() 不会返回一个我的项目数组,它总是返回一个值。让咱们看一张图来具体阐明这个概念。
这是在案例图不是 100% 分明的状况下写出的逻辑:
- 5 加到 10,后果是 15
- 15 加 12,后果是 27
- 27 加 18,后果是 45
- 45 加到 25,后果是 70
70 是返回的值。从代码实现开始,让咱们从 functools 模块导入 reduce 函数并申明一个返回两个数字之和的函数:
当初咱们能够从新拜访代码中的图表,并验证所有是否失常工作:
临时不要进入评论局部——我齐全晓得还有其余办法能够对列表中的我的项目求和。这只是展现该性能如何工作的最简略示例。
本文由 mdnice 多平台公布