在集合中找到最接近给定值的值

Find the nearest value to the given one in set

我想在集合 b 中找到最接近 5 的数字。这是我的代码。

b={1,2,45,65,3,2,8}
one=5
a=set()
for x in b:
  c=abs(x-one)  
  a.add(c)
print(min(a))

问题是你添加了参考值和集合中的值之间的差异,所以 5-3 = 2。我建议更好的改进,根本不要使用集合因为与仅使用如下所示的变量相比,它们效率非常低:

b={1,2,45,65,3,2,8}
one=5

nearest = None
smallest_gap = None
for x in b:
    nearest = x
    smallest_gap = abs(one - x)
    break

for x in b:
  if abs(one - x)<smallest_gap:
    smallest_gap = abs(one - x)
    nearest = x
print(nearest)

如果您要使用列表找到最接近 5 的元素,可以按照以下方法进行操作:

b={1,2,45,65,3,2,8}
b = list(b)
one=5
a=[]
for x in b:
  c=abs(x-one)  
  a.append(c)
print(b[a.index(min(a))])

您可以使用 minkey 参数来实现此目的:

b = {1,2,45,65,3,2,8}
target = 5 
result = min(b, key=lambda x: abs(x - target))