繁体   English   中英

有人可以为我解释这个主要列表生成器吗?

[英]Can someone explain this prime list generator for me?

这显然是一个非常快速的素数列表生成器( 将所有素数列出在N以下的最快方法 ),但是我无法理解其中的某些部分,主要是因为语法。

def rwh_primes1(n): 
    """ Returns  a list of primes < n """
    sieve = [True] * (n/2)
    for i in xrange(3,int(n**0.5)+1,2):
        if sieve[i/2]:
            sieve[i*i/2::i] = [False] * ((n-i*i-1)/(2*i)+1)
    return [2] + [2*i+1 for i in xrange(1,n/2) if sieve[i]]

为什么将sieve定义为[True] (布尔值)乘以整数?

if sieve[i/2]是什么意思?

sieve[i*i/2::i]意味着什么,尤其是::i部分?

看起来只是您要查找的数组符号。

[a] * 5变成[a,a,a,a,a]

if sieve[i/2]正在检查i/2处的sieve的值为True还是False

::定义步幅。

看到这个答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM