42

更少循环?看看这3个Python函数

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI2NjkyNDQ3Mw%3D%3D&%3Bmid=2247492888&%3Bidx=1&%3Bsn=32e7f552d555331e035dd2c0aa2650ff
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

EjyQZvZ.jpg!web

全文共 1146 字,预计学习时长 5 分钟

fUBnqu6.jpg!web

图源:wired

诞生于1991年的Python,这几年突然火了。简历上有了Python,就业竞争力瞬间提升,甚至一些小学教材上都出现了Python内容。这种语言的热度超过了以往任何时候。

作为21世纪最流行的语言之一,Python当然有很多有趣的函数值得深入探索和研究。笔者今天就将从理论和实际两个方面,介绍其中三个函数。

这三个函数可不简单,它们可以帮助程序员们避免编写循环,有时循环的运行成本是很高的。此外,这些函数还有助于提高运行速度。

拿出笔小本本开始学习吧!

NnuUFb2.jpg!web

map()

map() 函数的作用是将另一函数作为参数,与某种数组放在一起,旨在将函数(作为参数而导入的函数)应用于数组中的每一个项。其好处在于:

·        无需编写循环

·        2.比编写循环用时短

aqiYfim.jpg!web

图源:unsplash

来看看实际效果。笔者采用名为num_func()的函数,该函数以一个数字作为参数。将该数字平方并除以二,然后返回。

注:函数的操作是任意选择的,用户可以在函数中执行任何想进行的操作。

FF3Qjan.png!web

现在声明一串要应用num_func()的数字数组。注:map() 本身将会返回一个map对象,因此需要将其转为为一个列:

Mri2uqF.png!web

大功告成!虽然不是多难的技术,但是尽可能避免循环总是好事。

NnuUFb2.jpg!web

reduce()

reduce()则不同,必须从functools模块将其导入。该操作主要是将一个给定的函数应用于项目组,然后返回一个值。

最后一部分很关键——reduce()函数不会返回一个项目组,而是返回一个值。观察以下图表,以对此概念具体化。

veeUbi3.png!web

在图表不完全清楚的情况下,呈现出以下逻辑:

1.5加10等于15

2.15加12等于27

3.27加18等于45

4.45加25等于70

70是返回的值。从实现代码开始,先从functools模块导入reduce函数,再声明一个返回两个数字之和的函数:

yaERjir.jpg!web

现在,可以在代码中重新查看图表,并验证所有内容是否正常工作:

aayIZv2.jpg!web

当然还有许多办法可以对列表中的项目进行汇总,这里只展示了函数工作原理中最简单的一些例子。

jaauyan.jpg!web

图源:business.blogthinkbig.com

NnuUFb2.jpg!web

filter()

这个函数也非常棒,它可以节省时间——包括编写和执行。顾名思义,这个函数的作用是只将满足特定条件的项保留在数组中。

与map()一样,预先声明函数,然后将其和迭代列表一起传递到 filter()。

来一个示例:现已提前声明了一个名为 more_than_15()的函数,即如果参数给定的项大于15,则返回True。

AzYVjiJ.jpg!web

接下来,声明一个数字数组,并将其作为filter()函数中的第二个参数导入:

3QNjI3J.jpg!web

正如所料,只有三个值满足给定条件。是不是看起来比循环好多了?

RBv2QfN.jpg!web

图源:unsplash

用好这三个函数,你的代码看起来会更好,循环数也会更少。熟能生巧,要多练习呀~

UZbAzej.jpg!web

推荐阅读专题

mMby2iU.jpg!web

iYjIniQ.jpg!web

IjUZ322.jpg!web

jmyiMne.jpg!web

Nbqmy26.jpg!web

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:王俊博、柳玥

相关链接:

https://towardsdatascience.com/top-3-python-functions-you-dont-know-about-probably-978f4be1e6d

如转载,请后台留言,遵守转载规范

推荐文章阅读


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK