微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在集合中找到最接近给定值的值

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

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

解决方法

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

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

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

b={1,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,8}
b = list(b)
one=5
a=[]
for x in b:
  c=abs(x-one)  
  a.append(c)
print(b[a.index(min(a))])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。