使用list comprehension的目的是构建(construct)一个list
使用一次list comprehension,构建一个非素数
再使用一次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
中间变量的产生,然而这样做使得一条语句变得又长又不便于阅读,出于可读性的考虑,这样的做法并不推荐。