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

1个回答

  • 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]

    最后得到一个纯素数的列表[];