Python语言编程系列009——map及filter函数

问题提出

在Python编程语言中,有两个比较有意思的内置函数map()和filter(),这两个函数用法也很相似,都是要求两个输入参数,其中一个是函数参数,另一个是序列参数,然后对序列参数中的每个元素,根据函数参数定义的方法或规则处理后,返回一个新的序列,但两者又有所区别,下面通过一个具体的应用场景分别进行说明。

假定有20个0-10之间的随机数序列x,要求根据这20个随机数,作如下两种情况的处理,分别得到新序列y1和y2:

1、判断每个随机数x[i],如果其值满足0≤x[i]≤5,则y1[i]=-1,否则,则y1[i]=1,根据这个规则返回20个元素的新序列y1;

2、在这20个随机数中,找出其值x[i]满足3≤x[i]≤之间的所有元素,组成一个新序列并返回y2。

传统解决方案

如果仅仅是为了得到答案,我们可以自然而然的想到对于输入序列x使用for循环,然后逐个元素进行判断的解决方法,具体思路如下:

首先,导入numpy库,产生20个随机整数,并初始化y1数组和y2数组,代码如下:

对于第1个问题,实现代码如下:

对于第2个问题,实现代码如下:

使用map()函数和filter()函数的解决方案

通过上面传统方案的两段代码,是可以实现题目的要求,但是代码相对繁琐。下面改用map()和filter()函数的实现代码如下:

上面两行代码就实现了上面要求中得到的y1和y2序列。相对于用for循环的解决方案,代码确实简化了很多,充分体现了python编程语言优雅、简洁的特点。

结论

python语言内置了很多有用的函数,可以多看看了解下,在平时编程时能省我们很多的时间,尽量的做一个优雅的pythoner,本文完整的测试源代码如下:

运行结果如下:

从结果中也可以看出,两种方案都能得到我们的想要的结果。

欢迎加关注,共同交流。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180916A0P36G00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券