首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据列表与给定数字的接近程度对列表进行排序?

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

Stack Overflow用户
提问于 2012-04-24 03:04:37
回答 3查看 702关注 0票数 1

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

代码语言:javascript
运行
复制
target_list = [1,2,8,20]
number = 4

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

代码语言:javascript
运行
复制
   4-2 = 2
   4-1 = 3
 |4-8| = 4
|4-20| = 16

在发生冲突的情况下,我真的不关心哪个先到,但然后我会尝试根据这个距离度量对列表进行排序。要做到这一点,最好的(和pythonic式的)方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-24 03:06:38

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

代码语言:javascript
运行
复制
>>> target_list = [1,2,8,20]
>>> sorted(target_list, key=lambda x: abs(4-x))
[2, 1, 8, 20]

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

代码语言:javascript
运行
复制
>>> target_list.sort(key=lambda x: abs(4-x))
>>> target_list
[2, 1, 8, 20]
票数 12
EN

Stack Overflow用户

发布于 2012-04-24 03:07:08

代码语言:javascript
运行
复制
sorted(target_list, key=lambda k: abs(k - 4))

或者对列表进行就地排序:

代码语言:javascript
运行
复制
target_list.sort(key=lambda k: abs(k - 4))
票数 4
EN

Stack Overflow用户

发布于 2012-04-24 03:09:20

代码语言:javascript
运行
复制
>>> target_list.sort(key=lambda x: abs(number-x))
>>> target_list
[2, 1, 8, 20]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10286638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档