python求素数下面这个函数式不是很明白print reduce(lambda l,y:not 0 in map(la

问题描述:

python求素数
下面这个函数式不是很明白
print reduce(lambda l,y:not 0 in map(lambda x:y % x,l) and l+[y] or l,xrange(2,1000),[] )
那个not…in…的写法是怎么回事?lambda表达式冒号后面的部分是怎么理解呢?
1个回答 分类:数学 2014-12-03

问题解答:

我来补答
not 0表示非0 返回真,0返回假
print reduce(
lambda l,y:#递减的操作函数
(not 0 in map(lambda x:y % x,l)) and (l+[y]) or l,#l是一个列表[],结果l中后加入的数不能被前数整除,被整除则不添加后数
xrange(2,1000),#范围[2,1000)
[] )
测试到6,就把6依次整除之前的l=[2,3,5] ,除2余0,就放弃6.l仍是[2,3,5]
测试到7,就把7依次整除之前的l=[2,3,5] ,除2都不余0,加入6.l变成[2,3,5,7]
最后得到一个纯素数的列表[];
 
 
展开全文阅读
剩余:2000
上一页:不是奥数题