在集合中找到最接近给定值的值
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))])
您可以使用 min
的 key
参数来实现此目的:
b = {1,2,45,65,3,2,8}
target = 5
result = min(b, key=lambda x: abs(x - target))
我想在集合 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))])
您可以使用 min
的 key
参数来实现此目的:
b = {1,2,45,65,3,2,8}
target = 5
result = min(b, key=lambda x: abs(x - target))