分享

Python语言编程系列009----map()及filter()函数的使用例子

 lgk88888 2018-09-16

问题提出

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

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

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

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

传统解决方案

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

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

  

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

  

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

  

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

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

  

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

结论

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

  

运行结果如下: 

  

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

 

欢迎加关注,共同交流。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多