簡體   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