Прежде всего, извините за запутанный заголовок.
Я хочу преобразовать {1, 4, 9}
в:
{True, False, False, True, False, False, False, False, True}
То есть только индексы из первогоlist будет иметь значение True
, остальное будет False
.
Я чувствую, что есть какое-то действительно простое решение, но я довольно новичок как в Mathematica, так и в функциональном программировании.Я мог бы сделать это итеративно, в цикле, но должно быть что-то, что работает со списком в целом.Правильно?:)
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: чтобы показать, что я пытался что-то сделать, прежде чем я спросил, вот мой прогресс на данный момент:
first={1,4,9}
ReplacePart[Table[False, {x, Max[first]}], {1} -> True]
(* gives {True, False, False, False, False, False, False, False, False} *)
К сожалению, он не работает с {1,4,9} -> True
, но будет работать с {1 -> True, 4 -> True, 9 -> True}
.Но я не знаю, как добраться до этого ...
РЕДАКТИРОВАТЬ 2: получил его.
ReplacePart[Table[False, {x, Max[first]}], Table[x -> True, {x, first}]]
Я все еще хотел быувидеть ваши решения!Этот мне кажется уродливым хаком ...:)