Я немного растерялся, как эффективно сделать следующее в 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 выполняет казиллионный линейный поиск по b
. Я хочу, чтобы он быстрее выполнял поиск с помощью хеш-таблицы. Но, похоже, такой структуры не существует. Самый близкий, который я мог найти, это SparseArray, но
sa = SparseArray[{1 -> True, 2 -> True}];
MemberQ[sa, 1]
- это False
.
Я уверен, что в Mathematica это должно быть возможно в одной строке кода или меньше, я просто не вижу это для деревьев или чего-то еще.
Любой герой на помощь? Тем временем я собираюсь сделать это с C #.