Я немного не понимаю, как эффективно выполнять следующие действия в системе 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 #.