2011-06-17 27 views
5

Tamam, buradaki çözümü bulamadığım çok kolay bir soru;İki diziyi pythondaki bir matrise birleştirin ve sıralayın

I 2xN elemanlarla Tür 2D matris "C", böylece

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

yapamadım, iki liste A ve yeni bir yapı yaratmak istiyoruz

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

B'li Bu matrisleri oluşturmanın kolay bir yolunu görmediğim için bunu al.

Sonra B'den gelen tüm unsurları yüksekten en düşüğe doğru sıralanır yeni matrisi "D" almak istiyorum en düşük tür

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

Bunu nasıl elde edebiliriz?

P.S. "D" yi aldığımda, ilk iki gibi A2 ve B2 dizilerini nasıl ayırabilirdim?

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

Böyle

cevap

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

Veya tek bir satırda: Büyük

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

! son soru, yeni "D" yi yeni A2 ve B2'ye nasıl ayırabilirim? – flow

+0

Son biti ilk kez, cevabımı içerecek şekilde düzenledim. –