python - 有人能为我解释一下这个素数列表生成器吗?

标签 python list

这显然是一个非常快的素数列表生成器( Fastest way to list all primes below 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]( bool 值)乘以整数?

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

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

最佳答案

看起来这只是您正在寻找的数组表示法。

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

if sieve[i/2] 正在检查 i/2 处的 sieve 值是否为 TrueFalse

并且 :: 定义步幅。

参见this回答。

关于python - 有人能为我解释一下这个素数列表生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18172450/

相关文章:

Python - 拆分包含 '\x' 的字符串

python - 只初始化一次类变量

python - 如何阻止 vs code 生成 .ipynb 文件?

java - 尽管有一个可变成员,我怎样才能使这个类不可变?

java - 在 kotlin 中使用大小初始化 ArrayList<ArrayList<Int>>

python将来自不同列表的结果添加到单个列表

php - 在 PHP 中处理 Python 异常/错误

Python 将字符串转换为列表(无 .split())

python - 从列表中的嵌套元组中获取特定值

scala - 验证列表 Scala 中的项目的好方法