我有两个列表ns
和ts
。我想对ns
进行排序,然后根据排序方式移动ts
,使其与ns
相匹配。这样的东西就是输入和输出:
ns = (0 4 2 5 1)
ts = (1 2 3 4 5)
ns = (0 1 2 4 5)
ts = (1 5 3 2 4)
我知道我可以通过ns.sort()
和ts.sort()
对这些内容进行排序,但这只会对ns
进行排序。
答案 0 :(得分:1)
您可以将两个列表压缩在一起排序:
In [5]: sorted(zip(ns, ts))
Out[5]: [(0, 1), (1, 5), (2, 3), (4, 2), (5, 4)]
然后抓住元组中的第二个元素:
In [6]: [pair[1] for pair in sorted(zip(ns, ts))]
Out[6]: [1, 5, 3, 2, 4]
或不太可读:
zip(*sorted(zip(ns, ts)))[1]
答案 1 :(得分:0)
压缩,排序,解压缩,解包:
ns = (0, 4, 2, 5, 1)
ts = (1, 2, 3, 4, 5)
ns, ts = zip(*sorted(zip(ns, ts)))