Skip to main content
 首页 » 编程设计

python之根据另一个列表对列表进行排序

2025年05月04日24shanyou

我在 python3.6 中有两个列表,我想通过考虑 d 值对 w 进行排序。这类似于这个问题, Sorting list based on values from another list? ,虽然,我不能使用 zip 因为 w 和 d 不是配对数据。

我有一个代码示例,想要获取 t 变量。

已更新

我可以使用 for 循环来完成。有没有更快的方法?

import numpy as np 
 
w = np.arange(0.0, 1.0, 0.1) 
t = np.zeros(10) 
d = np.array([3.1, 0.2, 5.3, 2.2, 4.9, 6.1, 7.7, 8.1, 1.3, 9.4]) 
ind = np.argsort(d) 
print('w', w) 
print('d', d) 
 
for i in range(10): 
    t[ind[i]] = w[i] 
 
print('t', t) 
#w [ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9] 
#d [ 3.1  0.2  5.3  2.2  4.9  6.1  7.7  8.1  1.3  9.4] 
#ht [ 0.3  0.   0.5  0.2  0.4  0.6  0.7  0.8  0.1  0.9] 

请您参考如下方法:

像这样使用argsort:

>>> t = np.empty_like(w) 
>>> t[d.argsort()] = w 
>>> t 
array([0.3, 0. , 0.5, 0.2, 0.4, 0.6, 0.7, 0.8, 0.1, 0.9])