2 つのリストに共通の要素が含まれているかどうかを確認する簡単な方法はありますか。
いえ
set1 = [1,2,3,4]
set2 = [[1,5,7],[1,2,3,8]]
set1 にあるが set2 のどのセットにもない要素を潜在的に分離する方法はありますか? set1 と比較するために、set2 のセットの x 量を一緒に追加して (concat を使用して) 1 つの大きなセットにするのが最善の方法でしょうか、それとも時間の無駄ですか?
アドバイスをいただければ幸いです。
2 つのリストに共通の要素が含まれているかどうかを確認する簡単な方法はありますか。
いえ
set1 = [1,2,3,4]
set2 = [[1,5,7],[1,2,3,8]]
set1 にあるが set2 のどのセットにもない要素を潜在的に分離する方法はありますか? set1 と比較するために、set2 のセットの x 量を一緒に追加して (concat を使用して) 1 つの大きなセットにするのが最善の方法でしょうか、それとも時間の無駄ですか?
アドバイスをいただければ幸いです。
import Data.Set as Set
foldl (\x y -> Set.difference x (Set.fromList y)) (Set.fromList set1) set2
次の出力が得られます。
fromList [4]
そして、set2内のどのセットにも含まれていないset1のメンバーを常に提供します-これはあなたの質問のようです。
試す
filter (`notElem` (concat set2)) set1
set1からのリストのいずれにも含まれていないからのすべての要素のリストを返しますset2。ただし、その空間的な複雑さについてはわかりません。
のすべての要素のセットを作成し、set2それを使用してフィルター処理できますset1。
import Data.Set as Set
let s = foldl (flip Set.insert) Set.empty (join set2) in [e | e <- set1, e `notMember` s]