在python中将两个数组合并到一个矩阵中并进行排序

时间:2011-06-17 17:38:18

标签: python arrays sorting matrix

好的,这是一个非常简单的问题,我在这里找不到解决方案;

我有两个名单A和B

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

我想创建一个新的结构,一种带有2xN元素的2D矩阵“C”,以便

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

我无法达到这一点,因为我没有看到构建这种矩阵的简单方法。

然后我想得到一个新的矩阵“D”,其中来自B的所有元素都从最高到最低排序

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

我怎么能实现这个目标?

P.S。一旦我得到“D”,我怎么能把它分成两个字符串A2和B2,就像第一个一样?这样的

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

1 个答案:

答案 0 :(得分:9)

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

或全部在一条线上:

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