1

2 つのリストに共通の要素が含まれているかどうかを確認する簡単な方法はありますか。

いえ

set1 = [1,2,3,4]
set2 = [[1,5,7],[1,2,3,8]]

set1 にあるが set2 のどのセットにもない要素を潜在的に分離する方法はありますか? set1 と比較するために、set2 のセットの x 量を一緒に追加して (concat を使用して) 1 つの大きなセットにするのが最善の方法でしょうか、それとも時間の無駄ですか?

アドバイスをいただければ幸いです。

4

3 に答える 3

1
import Data.Set as Set
foldl (\x y -> Set.difference  x (Set.fromList y)) (Set.fromList set1) set2

次の出力が得られます。

fromList [4]

そして、set2内のどのセットにも含まれていないset1のメンバーを常に提供します-これはあなたの質問のようです。

于 2013-10-07T11:13:40.580 に答える
0

試す

filter (`notElem` (concat set2)) set1

set1からのリストのいずれにも含まれていないからのすべての要素のリストを返しますset2。ただし、その空間的な複雑さについてはわかりません。

于 2013-10-06T18:44:20.040 に答える
0

のすべての要素のセットを作成し、set2それを使用してフィルター処理できますset1

import Data.Set as Set
let s = foldl (flip Set.insert) Set.empty (join set2) in [e | e <- set1, e `notMember` s]
于 2013-10-06T18:44:47.737 に答える