目前,我正在研究一个Python问题,我想在列表中找到两个值,其中的差异最接近特定数字。
例如,我想在
A
中找到差值最接近 2 的两个值。
A = [1,5,9,10,20,7]
在这种情况下,答案需要是
5
和 7
。
限制是你总是会做
A[N+x] - A[N]
。例如,您不可以做5-9
。那样的话,永远是9-5
这在 Python 中可能吗?
5,7 和 9,7 的差值是不是比 9,10 更接近 2,因为这些差值恰好是 2?我不确定您是否要折扣所有差值恰好为 2 的对。如果您需要折扣差值正好为 2 的值,可以相应地修改以下代码。
import itertools
list_ = [1,5,9,10,20,7]
all_pairs = list(itertools.combinations(list_, 2))
pairs = {key:key[0]-key[1] if key[0]-key[1]>=0 else key[1]-key[0] for key in
all_pairs}
def takeClosest(num,collection):
return min(collection,key=lambda key_: abs(collection[key_]-num))
print(takeClosest(2,pairs))
希望有帮助,如果没有,请进一步澄清 9,10 的例子。