python技巧——使用list comprehension生成素数(prime number)

使用list comprehension的目的是构建(construct)一个list

  1. 使用一次list comprehension,构建一个非素数

  2. 再使用一次list comprehension,获得素数

>>> import math 
>>> noprimes = [j for i in range(2, int(math.sqrt(100))) for j in range(2*i, 100, i)]
>>> primes = [x for x in range(2, 100) if x not in noprimes]

当然,也可以对list comprehension进行嵌套,比如这样:

>>> primes = [x for x in range(2, 11) if x not in [j for i in range(2, 11) for j in range(2*i, 100, i)]]

也即避免了noprimes中间变量的产生,然而这样做使得一条语句变得又长又不便于阅读,出于可读性的考虑,这样的做法并不推荐。

你可能感兴趣的:(python技巧——使用list comprehension生成素数(prime number))