Skip to main content
 首页 » 编程设计

python之如何根据列表与给定数字的接近程度对列表进行排序

2025年05月04日11sharpest

我想根据列表中数字与给定数字的接近程度对列表进行排序。例如:

target_list = [1,2,8,20] 
number = 4 

那么排序列表可能是 [2,1,8,20] 因为:

   4-2 = 2 
   4-1 = 3 
 |4-8| = 4 
|4-20| = 16 

如果发生碰撞,我真的不在乎哪个先出现,但我会尝试根据这个距离度量对列表进行排序。 执行此操作的最佳(和 pythonic)方法是什么?

请您参考如下方法:

您可以使用 sorted 函数的 key 参数

>>> target_list = [1,2,8,20] 
>>> sorted(target_list, key=lambda x: abs(4-x)) 
[2, 1, 8, 20] 

或者,如果您想就地对其进行排序,甚至列表 sort 方法也接受一个 key。

>>> target_list.sort(key=lambda x: abs(4-x)) 
>>> target_list 
[2, 1, 8, 20]