MemberQ в Mathematica

Я немного не понимаю, как эффективно выполнять следующие действия в системе Mathematica:

a = { 1, 2, 3, 4, 5 };  (* list of integers *)
b = { 2, 4, 6, 8 };     (* another list of integers *)
filter = Table[MemberQ[b, element], {element,a}]

Ожидаемый результат:

{False, True, False, True, False}

Мои списки a и b большие, поэтому система Mathematica выполняет kazillion линейных поисков через b . Я хочу, чтобы он выполнял более быстрый поиск с помощью хеш-таблицы. Но такой структуры вроде бы нет. Ближайшее, что я смог найти, - это SparseArray, но

sa = SparseArray[{1 -> True, 2 -> True}];
MemberQ[sa, 1]

это False .

Я уверен, что это должно быть возможно в Mathematica в одной строке кода или меньше, я просто не вижу этого за деревья или что-то в этом роде.

Есть ли герой, который придет на помощь? А пока я собираюсь сделать это с помощью C #.

8
задан dreeves 13 September 2010 в 05:13
поделиться