1. 程式人生 > >python技巧——使用list comprehension生成素數(prime number)

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