python---一行代码求素数

 本篇文章主要是对一行代码求素数的思路解析,分别解释了map()函数、filter()函数和all()函数 的使用方法,并具体分析了该行代码的求解思路,最后,又用一些实际例子说明了一下all函数。

目录

          代码如下:

          关于里面用到的函数的解释:

这行代码的思路解析:

最后,关于all()进一步解释


  •  代码如下:

list(filter(lambda x:all(map(lambda p:x % p != 0,range(2,x))),range(2,20)))
  • 关于里面用到的函数的解释:

  1. map(func,*iterables):map函数接收两个参数,一个是函数func,一个是可迭代对象iterables,map将传入的函数func用于传入的可迭代对象上,返回的结果是一个迭代器。
  2. filter(func,iterable):filter函数也是接收两个参数,一个是函数func,一个是可迭代序列。filter将函数作用于可迭代序列,只不过返回值是根据func运行的结果是True还是False选择保留该元素。
  3. all()判断是否全为True,是则返回True,不是则返回False;其中,0、False、None、空均为False。
  • 这行代码的思路解析:

  1. 对于这行代码来说,x由range(2,20)提供,p由range(2,x)提供;

  2. 先是lambda p:x % p != 0依次作用于range(2,x)上,当一个x,对range(2,x)中的数依次进行求余,由map()函数,可得一个元素为True或者False组成的可迭代序列。

  3. 再用all()函数对这个元素为True或者False组成的可迭代序列进行判断,如果all()函数返回True,说明序列内的元素全为True,也就是说,x对range(2,x)求余全部不为0,那么x即为一个素数;否则,all()函数返回False,说明序列内含有False,也就是,x可以被range(2,x)中的数整除,那么,x就不是素数。

  4. 最后,filter()函数,依次返回all()为True对应的x值。可以获得一个素数序列。

  • 最后,关于all()进一步解释

all(map(lambda p:5 % p != 0,range(2,5)))  # 返回ture,说明5是质数
# all判断可迭代对象中的所有元素是否都为真,是则返回True;否则,返回False;
#  0,None,False,空都算是false;
all(map(lambda p:4 % p != 0,range(2,4)))   #返回False,说明4不是质数
list(map(lambda p:4 % p != 0,range(2,4)))  
# map返回[False, True],因此用all会返回False;
# map是将函数依次作用于序列上
# filter将函数依次作用于序列上,值为True的则返

 

  • 2
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页

打赏

夜雨_小学徒

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者