首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列表中查找给所有元素之间的最小绝对差的两个元素

在列表中查找给所有元素之间的最小绝对差的两个元素
EN

Stack Overflow用户
提问于 2022-03-16 16:42:10
回答 1查看 746关注 0票数 1

假设我有一个列表:l=[7,2,20,9]和我不想在所有元素之间找到最小的绝对差(在这种情况下,它将是9-7 =2,或者等效地是x=7-9)。要在nlogn复杂性中完成,我需要进行排序,获取差异,并找到最小元素:

代码语言:javascript
运行
复制
import numpy as np
sorted_l = sorted(l) # sort list
diff_sorted = abs(np.diff(sorted_l)) # get absolute value differences
min_diff = min(diff_sorted) # get min element

但是,在这样做之后,我需要跟踪原始l列表中使用了哪些元素导致了这种差异。所以对于l,最小差是2,我需要的输出是7和9,因为9-7是2。有什么方法可以做到吗?sorted方法破坏了顺序,很难回溯。我漏掉了什么明显的东西吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 16:52:02

使用:

代码语言:javascript
运行
复制
index = diff_sorted.tolist().index(min_diff)
sorted_l[index:index+2]

输出

代码语言:javascript
运行
复制
[7, 9]

整本剧本

代码语言:javascript
运行
复制
import numpy as np
l=[12,24,36,35,7]
sorted_l = sorted(l)
diff_sorted = np.diff(sorted_l)
min_diff = min(diff_sorted)
index = diff_sorted.tolist().index(min_diff)
sorted_l[index:index+2]

输出

代码语言:javascript
运行
复制
[35, 36]

解释

tolist正在将numpy数组转换为包含index函数的列表,该列表为输入参数提供索引。因此,利用tolistindex函数,我们得到排序数组中最小值的索引。使用该索引,我们得到两个数字,从而得到最小差(index:index+2是在排序数组中选择两个数字)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71501021

复制
相关文章

相似问题

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