Я хотел бы объединить два списка. Если у меня есть следующие два списка: {a,b,c,d}
и {1,2,3,4}
, что мне нужно сделать, чтобы получить {{a,1}, {b,2}, {c,3}, {d,4}}
?
Пары для создания кортежей в порядке
Ответ 1
Вот один из способов:
Transpose[{{a, b, c, d}, {1, 2, 3, 4}}]
Ответ 2
Эзотерический метод Flatten
, который (из секции справки по Flatten) также позволяет транспонировать массив "оборванных".
Flatten[ {{a, b, c, d}, {1, 2, 3, 4, 5}}, {{2}, {1}}]
Out [6] = {{a, 1}, {b, 2}, {c, 3}, {d, 4}, {5}}
Ответ 3
Одним из возможных решений является
MapThread[List,{{a,b,c,d},{1,2,3,4}}]
Ответ 4
Если у вас есть списки со столбцами матрицы:
l = Table[Subscript[g, Sequence[j, i]], {i, 5}, {j, 5}]
Transpose выдаст вам строки:
[email protected] // MatrixForm
Ответ 5
listA={a,b,c,d};
listB=[1,2,3,4};
[email protected]{# & @@@ listA, # & @@@ listB}
Ответ 6
В случае, если сами, a, b, c, d также являются списками, используйте следующее:
MapThread[Flatten[{#1[[All]],#2}]&,{l1,l2}]//TableForm
Ответ 7
Это отличный вопрос. Я застрял, думая, что существует способ по умолчанию сделать это с помощью таблицы, но не так. Нижеприведенные ответы довольно интуитивно понятны и могут быть легко обобщены на другие подобные ситуации.
l1 = {a,b,c,d};
l2 = {1,2,3,4};
pairs = Table[{l1[[i]], l2[[i]]}, {i, 1, Length[l1]}]
MapThread тоже делает это. Это менее элегантно, чем решение Howard MapThread, но также более читаемо в некотором смысле. Посмотрите на документы MapThread. Функция определена встроенной (чистая функция):
pairs = MapThread[{#1, #2} &, {l1, l2}]