如何解决在集合中找到最接近给定值的值
我正在尝试在集合 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))
解决方法
您可以使用 key
的 min
参数来实现此目的:
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 举报,一经查实,本站将立刻删除。