2011-06-17 7 views
5

OK, jest to bardzo proste pytanie, na które nie mogłem znaleźć rozwiązania;Scalenie dwóch macierzy w macierz w pytonie i sortowanie

mam dwie listy A i B

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

ja chce utworzyć nową strukturę, rodzaj matrycy 2D "C", z elementami 2xN tak że

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

nie mógł dostać się do tego, ponieważ nie widzę łatwego sposobu na zbudowanie takich matryc.

Następnie chciałbym uzyskać nową matrycę „D”, w którym wszystkie elementy pochodzące z B są posortowane od najwyższego do najniższego takie

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

Jak można to osiągnąć?

P.S. Kiedy dostaję "D", jak mogę oddzielić go na dwa ciągi A2 i B2 jak pierwsze? Takie

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

Odpowiedz

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

lub wszystkie w jednym wierszu:

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

wielkiego! ostatnie pytanie, w jaki sposób mogę oddzielić nowe "D" od nowych A2 i B2? – flow

+0

Nieodebrane za pierwszym razem, edytowałem swoją odpowiedź, aby ją uwzględnić. –