差异最接近特定数字的值
values for which the difference is the closest to a specific number
目前,我正在研究一个 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 示例。
目前,我正在研究一个 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 示例。