0
說我有兩個X的數組,並需要把他們通過一個過濾器,然後在結果變換每個項目分爲伊蘇如何過濾理解結果?
數組[for (x of Xs) if (condition(x)) transform(x)]
但後來我還有一個過濾器,依賴於結果第一個過濾器,例如只返回在2個標準偏差範圍內的已過濾陣列中的項目
我該怎麼做?
說我有兩個X的數組,並需要把他們通過一個過濾器,然後在結果變換每個項目分爲伊蘇如何過濾理解結果?
數組[for (x of Xs) if (condition(x)) transform(x)]
但後來我還有一個過濾器,依賴於結果第一個過濾器,例如只返回在2個標準偏差範圍內的已過濾陣列中的項目
我該怎麼做?
然後,這樣做的方法是嵌套幾個理解或生成器表達式。你可以用一個複雜的表達來完成整個事情,但如果你把它們分開,它可以更清楚。
舉例來說,如果你想與一個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)]
當然,你可以添加你需要的嵌套許多額外的層。
我想你的問題不太清楚。你能用不同的詞來解釋嗎? – RafaelC
你的意思是'[如果條件(x)]'在xs中變換x(x)'? – TigerhawkT3
試着先用傳統的循環寫你的算法。看到一個工作算法可以在重構它(如果需要的話)中非常有幫助。 – TigerhawkT3