Rob*_*dra 5 python sorting list python-3.x
我坚持一个问题,我想不出任何有效的方法来做到这一点.问题如下:
我有2个列表,每个列表n最多10^3.
v = [v_1, v_2, ..., v_n]
w = [w_1, w_2, ..., w_n]
Run Code Online (Sandbox Code Playgroud)
在以下示例中n = 3.
v = [60, 100 , 120]
w = [20, 50, 30]
Run Code Online (Sandbox Code Playgroud)
我需要根据以下等式的递减顺序对两个列表进行排序: v_i/w_i
所以在这种情况下我会得到:
v_1/w_1 = 3
v_2/w_2 = 2
v_3/w_3 = 4
Run Code Online (Sandbox Code Playgroud)
之后,我需要按降序排序两个列表(相互依赖),我会得到以下结果.
v_new = [120, 60, 100]
w_new = [30, 20, 50]
Run Code Online (Sandbox Code Playgroud)
我知道有一种排序方式(zip(X,Y),但这样做会改变我的列表中的元组,我需要它作为列表.任何建议?
Python的排序函数可以使用键,您可以使用lambda函数来定义要排序的键.在这种情况下,我建议对索引进行排序,然后将订单应用于v和w.例如:
v = [60, 100 , 120]
w = [20, 50, 30]
order = sorted(range(len(v)), key=lambda i: v[i] / w[i], reverse=True)
v_new = [v[i] for i in order]
w_new = [w[i] for i in order]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |