好的,这是一个非常简单的问题,我在这里找不到解决方案;
我有两个名单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,...)
答案 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]))