2011-06-17 35 views
5

Bien, esta es una pregunta muy fácil para la que no pude encontrar la solución aquí;Combinar dos matrices en una matriz en python y ordenar

tengo dos listas A y B

A=(0,1,2,3,...,N-1) (N elements) 
B=(-50,-30,-10,.....,-45) (N elements) 

me gustaría crear una nueva estructura, una especie de matriz 2D "C" con elementos 2xN modo que

C(0)=(0,-50) 
C(1)=(1,-30) 
... 
C(N)=(N-1,-45) 

no pude llegar a esto, ya que no veo una manera fácil de construir tales matrices.

Entonces me gustaría obtener una nueva matriz "D", donde todos los elementos procedentes de B están ordenados de mayor a menor, tales

D(0)=(0,-50) 
D(1)=(N-1,-45) 
D(2)=(1,-30) 
... 

¿Cómo podría lograr esto?

P.S. Una vez que obtengo la "D", ¿cómo podría separarla en dos cadenas, A2 y B2, como las primeras? Tal

A2=(0,N-1,1,...) 
B2=(-50,-45,-30,...) 

Respuesta

9
C = zip(A, B) 
D = sorted(C, key=lambda x: x[1]) 
A2, B2 = zip(*D) 

O en una sola línea:

A2, B2 = zip(*sorted(zip(A,B), key=lambda x: x[1])) 
+0

genial! última pregunta, ¿cómo podría separar la nueva "D" en las nuevas A2 y B2? – flow

+0

Perdido el último bit la primera vez, he editado mi respuesta para incluirlo. –

Cuestiones relacionadas