Rud*_*ira 3 python list-comprehension list python-2.7
我需要计算前五个素数.我想在列表理解中构建它时检查列表的长度.以下代码不起作用.
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
Run Code Online (Sandbox Code Playgroud)
输出:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
Run Code Online (Sandbox Code Playgroud)
为什么len(primes)<6不在这里工作.我怎样才能做到这一点?
"Pythonic"方式是使用生成器,加上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))
Run Code Online (Sandbox Code Playgroud)
这样做会创建一个无限的"列表" primes,您可以在很多方面使用该列表来使用列表,但它实际上只会计算您需要的值.
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |