对一个列表进行排序,然后根据第一个列表对另一个列表进行排序

2024-04-25 01:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表nsts。我想对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进行排序。你知道吗


Tags: 列表排序方式sortnsts
2条回答

您可以对压缩在一起的两个列表进行排序:

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]

压缩、排序、解压缩、解包:

ns = (0, 4, 2, 5, 1)
ts = (1, 2, 3, 4, 5)
ns, ts = zip(*sorted(zip(ns, ts)))

相关问题 更多 >