根据列表python中最接近的数字排序列表

时间:2012-04-23 19:04:37

标签: python

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

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

then probably sorted list is [2,1,8,20] 
         as 4-2 = 2
            4-1 = 3
            mod|4-8| = 4
            mod|4-20| = 16

碰撞,我真的不在乎哪一个先来,但后来我试图根据这个距离度量对列表进行排序。 什么是最好的(和pythonic)方法。

感谢

3 个答案:

答案 0 :(得分:10)

您可以使用key功能

sorted参数
>>> 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]

答案 1 :(得分:4)

sorted(target_list, key=lambda k: abs(k - 4))

或者对列表进行排序:

target_list.sort(key=lambda k: abs(k - 4))

答案 2 :(得分:1)

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