2011-06-17 16 views
5

これは解決策が見つからないという非常に簡単な質問です。2つの配列をPythonで行列にマージしてソートする

私はできなかった

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

ように私は新しい構造を作成したい二つのリストAとB

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

、2xNの要素を有する2次元行列 "C" のようなものを持っています私はそのような行列を作る簡単な方法を見ていないので、これを得る。

それから私はBからのすべての要素が、このような

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

どのように私はこれを達成できる最高から最低までソートされた新しい行列「D」を取得したいですか?

P.S. "D"を取得したら、どうやって最初のもののように2つの文字列A2とB2に分けることができますか?

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

このような

答えて

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

または1本のライン上のすべて:偉大

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

!最後の質問ですが、どうすれば新しい「D」を新しいA2とB2に分けることができますか? – flow

+0

初めての最後のビットを逃した、私はそれを含めるために私の答えを編集しました。 –

関連する問題