快捷搜索:  汽车  科技

python学会使用函数(Python语言编程系列009map)

python学会使用函数(Python语言编程系列009map)结论上面两行代码就实现了上面要求中得到的y1和y2序列。相对于用for循环的解决方案,代码确实简化了很多,充分体现了python编程语言优雅、简洁的特点。对于第1个问题,实现代码如下:对于第2个问题,实现代码如下:通过上面传统方案的两段代码,是可以实现题目的要求,但是代码相对繁琐。下面改用map()和filter()函数的实现代码如下:

问题提出

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

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

  • 判断每个随机数x[i],如果其值满足0≤x[i]≤5,则y1[i]=-1,否则,则y1[i]=1,根据这个规则返回20个元素的新序列y1;
  • 在这20个随机数中,找出其值x[i]满足3≤x[i]≤之间的所有元素,组成一个新序列并返回y2。
传统解决方案

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

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

python学会使用函数(Python语言编程系列009map)(1)

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

python学会使用函数(Python语言编程系列009map)(2)

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

python学会使用函数(Python语言编程系列009map)(3)

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

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

python学会使用函数(Python语言编程系列009map)(4)

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

结论

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

python学会使用函数(Python语言编程系列009map)(5)

运行结果如下:

python学会使用函数(Python语言编程系列009map)(6)

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

欢迎加关注,共同交流。

猜您喜欢: