我想要运行此代码:
def genPrimes():
primes = [] # primes generated so far
last = 1 # last number tried
while True:
last += 1
for n in primes:
if last % n == 0:
break
else:
primes.append(last)
yield last
n = genPrimes()
如何实现此功能以返回100个素数列表?
答案 0 :(得分:4)
这是一台发电机。如果你更正了缩进,你可以在for循环中使用它,或者使用islice来获得前100个素数:
from itertools import islice
def genPrimes():
primes = [] # primes generated so far
last = 1 # last number tried
while True:
last += 1
for n in primes:
if last % n == 0:
break
else:
primes.append(last)
yield last
primes = list(islice(genPrimes(), 100))
答案 1 :(得分:1)
尝试:[n.next() for x in range(100)]
答案 2 :(得分:1)
这段代码有点神秘。我也认为它没有做任何事情。
你的其他东西是附属于你的,只有在你休息时才能执行。聪明但神秘。但是,您将列表初始化为[],然后执行循环。循环遍历空列表会跳过循环体,这意味着中断将永远不会执行。由于中断永远不会执行,因此生成器永远不会产生任何效果。
因此,这是一个无效的循环。