Подтвердить что ты не робот

Пары для создания кортежей в порядке

Я хотел бы объединить два списка. Если у меня есть следующие два списка: {a,b,c,d} и {1,2,3,4}, что мне нужно сделать, чтобы получить {{a,1}, {b,2}, {c,3}, {d,4}}?

4b9b3361

Ответ 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}]