2016-04-04 4 views
0

は、私はXの配列を持ち、かつフィルタを介してそれらを配置する必要があり、その後、イース理解の結果をフィルタリングする方法は?

[for (x of Xs) if (condition(x)) transform(x)] 

の配列に結果の各項目を変換しかし、その後、私はの結果に依存して別のフィルタを持っていると言います第1のフィルタ、例えばフィルタ処理された配列内の2標準偏差以内の項目のみを返します

私は何をしますか?

+0

あなたの質問はあまり明確ではないと思います。別の言葉で説明できますか? – RafaelC

+2

あなたは '[条件(x)の場合はXsのxに対して[transform(x)]'を意味しますか? – TigerhawkT3

+5

従来のループを使用してアルゴリズムを記述してみてください。動作中のアルゴリズムを見ることは、それをリファクタリングする際に非常に役立ちます(必要な場合)。 – TigerhawkT3

答えて

2

次に、これを行う方法は、いくつかの解説またはジェネレータの式を入れ子にすることです。 1つの複雑な表現ですべてを行うことができるかもしれませんが、分割した方がより明確になります。例えば

、あなたはtransform機能でリストの値を変換したい、と(変換結果ではなく、オリジナルの入力に基づいて)値の一部をフィルタリングしたい場合は、あなたが使用できます。

あなたが必要として、あなたはもちろん、ネストの多くの余分なレイヤを追加することができます
result = [x for x in (transform(y) for y in some_iterable) if condition(x)] 

または

transform_gen = (transform(y) for y in some_iterable) 
filtered_list = [x for x in transform_gen if condition(x)] 

関連する問題