2011-03-20 19 views

Respuesta

33

Aquí está una manera:

Transpose[{{a, b, c, d}, {1, 2, 3, 4}}] 
10

Una posible solución es

MapThread[List,{{a,b,c,d},{1,2,3,4}}] 
+1

Si uno está a punto de hacer algo con los pares que se crean, esto ('MapThread') a menudo es más eficiente que' Apply' después de 'Transpose'. –

2

Si tiene listas con las columnas de una matriz:

l = Table[Subscript[g, Sequence[j, i]], {i, 5}, {j, 5}] 

transposición le dará la filas:

[email protected] // MatrixForm 
15

Un método esotérico es Flatten, que (desde la Sección de ayuda sobre Aplanar) también permite la Transposición de una matriz "irregular".

Flatten[ {{a, b, c, d}, {1, 2, 3, 4, 5}}, {{2}, {1}}] 

Fuera [6] = {{a, 1}, {b, 2}, {c, 3}, {d, 4}, {5}}

+0

+1, no tenía idea de que 'Flatten' podría hacer eso. – rcollyer

+0

@rcollyer sí, escribí mi propia función para hacer eso, solo para luego descubrir que estaba allí todo el tiempo. –

+3

'Tema [Lista [{a, b, c, d}, {1, 2, 3, 4}]]' no se ha mencionado – tomd

0

Esto es una gran pregunta. Me había quedado atascado pensando que había una manera predeterminada de hacer esto con Table, pero no es así. Las respuestas a continuación son bastante intuitivas y se pueden generalizar fácilmente a otras situaciones similares.

l1 = {a,b,c,d}; 
l2 = {1,2,3,4}; 
pairs = Table[{l1[[i]], l2[[i]]}, {i, 1, Length[l1]}] 

MapThread hace este tipo de cosas también. Esto es menos elegante que la solución MapThread de Howard, pero también es más legible en cierto sentido. Mire los documentos MapThread. inline la función se define (función pura):

pairs = MapThread[{#1, #2} &, {l1, l2}] 
1

En caso de que a, b, c, d ellos mismos también son lista, utilice la siguiente:

MapThread[Flatten[{#1[[All]],#2}]&,{l1,l2}]//TableForm

Cuestiones relacionadas