python - 检查列表理解中列表的长度(基于列表理解中元素的计数迭代)

标签 python python-2.7 list list-comprehension

我只需要计算前五个质数。我想在列表理解中构建列表时检查列表的长度。以下代码不起作用。

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/

相关文章:

Python 追加列表并停止它

Python open() 模式和文件写入

python - 在 Python 中比较字节

c# - 从字符串解析动态 int 列表的最有效方法

python - 在一行中使用 for 循环制作一个新集合

C#:将成员变量放入列表中

python - 覆盖 __init__ 中参数的类型提示

python - 从 numpy 数组中删除 pandas 中的特定行

Python - 过滤重叠范围

python - 处理 SheetsAPI 错误 - Python 2.7