Учитывая некоторый список
numbers = {2,3,5,7,11,13};
Как мне перевести это на
translatedNumbers = {{1,2},{2,3},{3,5},{4,7},{5,11},{6,13}}
сжато
Я знаю, как это сделать, используя процедурный стиль программирования следующим образом:
Module[{lst = {}, numbers = {2, 3, 5, 7, 11, 13}},
Do[AppendTo[lst, {i, numbers[[i]]}], {i, 1, Length@numbers}]; lst]
Но это довольно многословно для того, что мне кажется простой операцией. Например, эквивалент Хаскелла это
numbers = zip [1..] [2,3,5,7,11,13]
Не могу не подумать, что есть более краткий способ "индексировать" список чисел в Mathematica .
Потенциальный ответ
Очевидно, мне не разрешено отвечать на мой собственный вопрос после того, как у меня погасла лампочка, если у меня нет 100 "повторений". Так что я просто положу свой ответ здесь. Дайте мне знать, если я должен сделать что-то иначе, чем я сделал.
Ну, теперь я чувствую себя немного глупо, спросив это. Ибо если я рассматриваю списки mathematica как матрицу, я могу их транспонировать. Таким образом, ответ (возможно, не самый лучший) на мой вопрос таков:
Transpose[{Range@6, {2, 3, 5, 7, 11, 13}}]
Отредактировано для работы с произвольными списками ввода, я думаю что-то вроде:
With[{lst={2, 3, 5, 7, 11, 13}},Transpose[{Range@Length@lst,lst}]]
будет работать. Могу ли я сделать что-нибудь лучше?