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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值