リスト内包表記を使用する場合、結果のリストに含めたくない要素をifを使うことで除外できる。
例えば以下のようなコード
[ x for x in [1, 2, 3, ] if x > 2]
こうすると、出来上がるリストには3のみが含まれる。
この時、xに対して関数を適用して、尚且つ適用後の値でフィルタリングを行いたいというケースがある。
例えば以下のようなコード
def f(x):
x = x * 2
return x
[ f(x) for x in [1, 2, 3, ] if f(x) > 2]
このようにすると、出来上がるリストには、4, 6が含まれる。
重要なのは、こうした場合メソッドfは各要素に対して1度しか実行されないということ。
ー> この部分は誤り。