python作为21世纪最流行的编程语言之一,肯定会有很多很有趣很有用的函数值得深入学习,这篇文章介绍其中3个,记在脑海中必然会对你有很大帮助。
这篇文章的3个函数主要是为了避免你写循环,循环一般都会比较耗时,这3个函数的性能都是经过优化的,应该会给你的代码带来性能提升。如果你经常阅读代码,应该也会经常看到它们。
map函数一般包括两个参数,第一个是一个函数,第二个是一个数组,map函数会将函数针对数组里面的每个元素执行一遍并返回相应的结果。主要有两个好处,第一就是不用写循环了,第二就是它更快。
举个例子,假如有个函数叫num_func(),它的作用是求参数x的平方数再除以2,当然真实场景是这个函数体是根据需求编写的。
还有一个数组,你想让其中的每个元素都做求平方数再除以2,那么map()是你绝佳的选择。注意map()返回的是map对象所以你需要把它转换为list:
整个过程就结束了,想想如果自己实现该怎么实现呢?
这是另外一个节省coding时间和执行时间的函数。过滤器函数,看名字就知道它的作用是过滤掉那些不满足条件的数组元素。使用方法和map一样,传入一个函数和一个数组,不过这个函数的返回值应该是True或者False。
举个例子,假设你想找到一个数组里面所有大于15的数字,那么首先定义一个函数more_than_15(),如果大于15,它返回True,否则返回False。
下面我们定义一个数组,然后使用过滤器去返回满足条件的所有元素:
可以看到,0到15都被过滤掉了,返回的都是大于15的元素。一句话完成了很多功能。
reduce函数跟前两个稍微有点不一样,它的作用是归约,将数组里面的所有元素按照函数要求归约成一个数值。如图所示:
假设我们的归约函数是求和,那么它就会按照上述所示逻辑将整个数组归约成70,5和10求和15,15和12求和是27,18和27求和是45,45和25求和是70,至此所有元素遍历完,返回70。下面看下代码实现:
这里只是展示,便于理解,注意这里的add_nums可以是自身的业务逻辑。
这三个函数可能对你代码的性能影响可能很小,因为你的数据量可能不大,但是它确实能使你的代码简介变得高大上起来。