Python のリスト内包表記構文を使用すると、内包内の値を簡単にフィルター処理できます。例えば:
result = [x**2 for x in mylist if type(x) is int]
mylist 内の整数の 2 乗のリストを返します。しかし、テストに (コストのかかる) 計算が含まれていて、結果をフィルタリングしたい場合はどうでしょうか? 1 つのオプションは次のとおりです。
result = [expensive(x) for x in mylist if expensive(x)]
これにより、"偽" ではない高価な (x) 値のリストが生成されますが、それぞれの x に対して高価な () が 2 回呼び出されます。xごとに1回だけ高価な呼び出しを行いながら、このテストを実行できる理解構文はありますか?