假設我們有一個如下串列 [2.3, 1.02, 1.99, 0.99, 0.089, 0, 1.1, -1.1, -2.1]
我們希望根據它們與目標值的距離等于 1 以下列方式排列此串列中的元素:[0.99, 1.02, 1.1, 0.089, 1.99, 0, 2.3, -1.1, -2.1]
如何在一兩行中在 python 中做到這一點?
uj5u.com熱心網友回復:
蟒蛇解決方案
使用sorted到目標的絕對距離作為關鍵:
L = [2.3, 1.02, 1.99, 0.99, 0.089, 0, 1.1, -1.1, -2.1]
target = 1
out = sorted(L, key=lambda x: abs(x-target))
輸出:[0.99, 1.02, 1.1, 0.089, 1.99, 0.0, 2.3, -1.1, -2.1]
麻木的解決方案
計算絕對距離并使用numpy.argsort:
L = [2.3, 1.02, 1.99, 0.99, 0.089, 0, 1.1, -1.1, -2.1]
target = 1
import numpy as np
a = np.array(L)
out = a[np.argsort(abs(a-target))].tolist()
輸出:[0.99, 1.02, 1.1, 0.089, 1.99, 0.0, 2.3, -1.1, -2.1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/448671.html
標籤:数组 python-3.x 列表 麻木的 排序
