【发布时间】:2017-12-01 20:28:18
【问题描述】:
我使用我模糊理解的枚举函数遇到了这个素数筛,我理解代码背后的一般思想,即将“真”列表中的所有非素数值变为“假”,然后从创建一个主要列表。但我不确定如何解释第 5 行之后的代码,is_prime 是函数还是变量?我有点困惑
def prime_sieve(n):
sieve = [True] * n #Generates a list of 'True' of length n
sieve[:2] = [False, False] # 0 and 1 are not primes
primes = []
for prime, is_prime in enumerate(sieve):
if not is_prime:
continue
primes.append(prime)
for not_prime in range(prime*prime, n, prime):
sieve[not_prime] = False
return primes, sieve
【问题讨论】:
-
emumerate返回(index, item)的元组,所以is_prime只是索引prime处的项目值,即它是True或False取决于它是素数还是不是。 -
"is_prime 是函数还是变量?"函数就像任何其他对象一样,并且被分配给变量,所以我不确定你的意思,但它是一个变量,一个不会发生的变量引用一个函数。
标签: python python-3.x primes enumerate sieve