python - 次の行に進む前に、リスト内のすべての値の条件をテストするには

原文 python

素数のリストを作成する簡単な試み

l = []
r = []
q = [2,3,5,7,11,13,17,19,23]
for x in range(200):
    l.append(x)
for y in l:
    for p in q:
        if y % p > 0:
            r.append(y)
print r 


次の行に進む前に、条件y%pがqのpのすべての値に対してテストされていないため、これが失敗であることを全員が確認できます。
質問-次の行に進む前に、q内のpのすべての値について条件y%pをテストするにはどうすればよいですか。
答え
all functionを確認します。


iterableのすべての要素がtrueの場合(またはiterableが空の場合)はTrueを返します。


例えば:

>>> y=25
>>> all(y%p>0 for p in q)
False
>>> y=29
>>> all(y%p>0 for p in q)
True


あなたの例では:

>>> l=range(2,200)
>>> r=[]
>>> for y in l:
...   if all(y%p for p in q):
...      r.append(y)
...
>>> r
[29, 31, 37, 41, 43, 47, 53, ...]
関連記事

python - Squidプロキシは、PythonではなくcurlではないGETリクエストで501を返します

python - なぜprint()はcom1の読み取りに影響するのですか?

python - texファイルのトークン(文字列)をPythonの辞書の値で置き換えますか?

python - Pythonでのストックウェル変換

python - キャノピーパスにパスを追加するにはどうすればよいですか?

python - 関数でPythonのtimeitモジュールを使用する

python - (localhost上の)HTMLファイル内からcgiスクリプトを呼び出す

python - 引数をPacketListフィールドに渡すscapy

python - ループ内のリストから要素をマージおよび削除する

python - xpathでテキストとして右矢印のリンクを選択するにはどうすればよいですか?