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

标签 python

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

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]

关于python - 如何根据列表与给定数字的接近程度对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286638/

相关文章:

python - 将绘图添加到 matplotlib 中的给定图形

Python pandas 数据帧输出格式

python - 定义@property

Python numpy.square 与 **

python - 迭代大量 xml 文档

python - 使用 Pandas 将数据覆盖到 BigQuery

python - 尝试更新现有订阅时 Trial_end 无效

python - 短信文本解决方案

python - 如何在 Python 中处理不可解码的文件名?

python - 导入不规则大小的文本文件