リストからの要素の抽出
リストから条件に合う要素だけを取り出し、リストとして返す。
1 2 3 4 |
lst1 = [0, 1, 2, 3, 4] print([x for x in lst1 if x > 2]) # [3, 4] |
一部要素がNone
を含む場合にスキップ。
1 2 3 4 |
lst2 = [1, None, 2, 3, None] print([x for x in lst2 if x != None]) # [1, 2, 3] |
辞書からの要素の抽出
辞書から条件に合うキーあるいは値を探し、条件に合う要素のみの辞書として返す。
1 2 3 4 5 6 |
dct1 = {"one":1, "two":2, "three":3, "four":4, "five":5} print({key:value for key, value in dct1.items() if value > 2}) print({key:value for key, value in dct1.items() if len(key)==3}) # {'three': 3, 'four': 4, 'five': 5} # {'one': 1, 'two': 2} |
キーあるいは値がNone
の場合にスキップ。
1 2 3 4 5 6 |
dct2 = {"one":1, None:None, "two":2, "three":3, None:None} print({key:value for key, value in dct2.items() if key != None}) print({key:value for key, value in dct2.items() if value != None}) # {'one': 1, 'three': 3, 'four': 4} # {'one': 1, 'three': 3, 'four': 4} |
参考:numpy.ndarray
の要素の抽出
numpy.ndarrayの要素の抽出は以下の手順で。
1 2 3 4 5 6 7 8 |
import numpy as np ary1 = np.array([0, 1, 2, 3, 4]) print(ary1%2==1) print(ary1[ary1%2==1]) # [False True False True False] # [1 3] |
ndarray
に条件式を適用すると、各要素の条件への適合/不適合に対応したTrue/False
を要素とするndarray
が生成されるndarray
の要素にTrue/False
を要素とするndarray
を適用すると、True
に対応する要素だけで構成されるndarray
が生成される- これらをまとめて、
ndarray[ndarrayの条件式]
として、条件式にあう要素のみのndarray
が得られる
より詳細にはndarray – 条件式による要素の取り出しを参照。