三个有用的python函数

python作为21世纪最流行的编程语言之一,肯定会有很多很有趣很有用的函数值得深入学习,这篇文章介绍其中3个,记在脑海中必然会对你有很大帮助。

这篇文章的3个函数主要是为了避免你写循环,循环一般都会比较耗时,这3个函数的性能都是经过优化的,应该会给你的代码带来性能提升。如果你经常阅读代码,应该也会经常看到它们。


map()

map函数一般包括两个参数,第一个是一个函数,第二个是一个数组,map函数会将函数针对数组里面的每个元素执行一遍并返回相应的结果。主要有两个好处,第一就是不用写循环了,第二就是它更快。

举个例子,假如有个函数叫num_func(),它的作用是求参数x的平方数再除以2,当然真实场景是这个函数体是根据需求编写的。

>>> def num_func(x): 
...   return x**2 / 2 
... 
>>> 

还有一个数组,你想让其中的每个元素都做求平方数再除以2,那么map()是你绝佳的选择。注意map()返回的是map对象所以你需要把它转换为list

>>> map(num_func, range(10)) 
<map object at 0x7efec8c3a208> 
>>> list(map(num_func, range(10))) 
[0.0, 0.5, 2.0, 4.5, 8.0, 12.5, 18.0, 24.5, 32.0, 40.5] 
>>> 

整个过程就结束了,想想如果自己实现该怎么实现呢?

filter()

这是另外一个节省coding时间和执行时间的函数。过滤器函数,看名字就知道它的作用是过滤掉那些不满足条件的数组元素。使用方法和map一样,传入一个函数和一个数组,不过这个函数的返回值应该是True或者False。

举个例子,假设你想找到一个数组里面所有大于15的数字,那么首先定义一个函数more_than_15(),如果大于15,它返回True,否则返回False。

>>> def more_than_15(x): 
...   return x>15 
... 

下面我们定义一个数组,然后使用过滤器去返回满足条件的所有元素:

>>> filter(more_than_15, range(30)) 
<filter object at 0x7efec8c3a320> 
>>> list(filter(more_than_15, range(30))) 
[16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29] 
>>> 

可以看到,0到15都被过滤掉了,返回的都是大于15的元素。一句话完成了很多功能。

reduce()

reduce函数跟前两个稍微有点不一样,它的作用是归约,将数组里面的所有元素按照函数要求归约成一个数值。如图所示:

假设我们的归约函数是求和,那么它就会按照上述所示逻辑将整个数组归约成70,5和10求和15,15和12求和是27,18和27求和是45,45和25求和是70,至此所有元素遍历完,返回70。下面看下代码实现:

>>> from functools import reduce 
>>> def add_nums(a, b): 
...   return a + b 
... 
>>> data = [5, 10, 12, 18, 25] 
>>> reduce(add_nums, data) 
70 

这里只是展示,便于理解,注意这里的add_nums可以是自身的业务逻辑。

这三个函数可能对你代码的性能影响可能很小,因为你的数据量可能不大,但是它确实能使你的代码简介变得高大上起来。

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

13 views

©2020 by EasyCSTech. Special thanks to IPinfo​ and EasyNote.