2016-10-22 12 views
3

x-.yには、yのセルであるものを除いて、xのすべてのアイテムが含まれています
しかし、xとyのセルであるアイテムをすべて取得したい場合はどうすればよいですか?
私はx-.yそして交差点はどうですか?

x -.^:2 y 

することによって、これを達成することができます。しかし、それは二回高価な操作を実行している必要があります。 もっと良い解決策はありますか?

+0

'-.'を2回行うのは高価です。 '-.'はむしろ効率的です。 – Eelvex

答えて

4

e.は、セットで作業するときに便利です。

x e. y 

は、マッチのリストを与える:Xリターン1の各項目の

それはそうでなければ、Yを "セット" 0に存在する場合。

1 2 3 4 e. 5 9 2 
0 1 0 0 

その後、

x (e. # [) y 

は、両方のリストに存在しないこれらの要素を選択します。 -.を行う

1 2 3 4 (e. # [) 5 9 2 
2 
5 8 (e. # [) i.12 
5 8 
+2

' - 。^:2'は途中でより効率的に思えます。 – Eelvex

3

二回J.

に非効率性を交差点を実施するための古典的な方法は、(一定の係数マイナーです - と、一般的に、あなたは彼らがない限りJの効率化の問題を気べきではありませんあなたが一般的に1000以上の問題の要因に集中したいと思うリソースの問題がある場合、2のファクタを超過します)。

([-.-.)または-.^:2が遅すぎると、-.も遅すぎます。 (これは、基本的な実装が非効率的である非常に大規模なデータセットで発生する可能性があります)最近のJのバージョンでは、この問題を修正するためにいくつかの作業が完了しています。