我只需要计算前五个质数。我想在列表理解中构建列表时检查列表的长度。以下代码不起作用。
def checkPrime(n):
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
return True
primes = []
primes = [x for x in range(2,30) if(checkPrime(x) and len(primes)<6) ]
print primes
输出:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
为什么 len(primes)<6
不在这里工作。我怎样才能做到这一点?
最佳答案
“Pythonic”方式是使用 generator , 再加上 islice
功能:
from itertools import islice
def checkPrime(n):
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
return True
def primes():
i = 2
while True:
if checkPrime(i):
yield i
i += 1
first_5 = list(islice(primes, 5))
这将创建一个名为 primes
的无限“列表”,您可以通过多种方式使用列表,但它只会实际计算您需要的值。
关于python - 检查列表理解中列表的长度(基于列表理解中元素的计数迭代),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49114267/