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

Inside_Zhang發表於2015-11-24

使用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中間變數的產生,然而這樣做使得一條語句變得又長又不便於閱讀,出於可讀性的考慮,這樣的做法並不推薦。

相關文章