python-3.x - 排序列表的二进制搜索,在列表中找到与用户提供的目标值最接近的值 Python 3
问题描述
有人可以帮助我如何访问所有浮点值并进行二进制搜索,以便如果匹配,它将输出列表中第二个的标题。例如,如果匹配 0.369,则查看下面的输出,它将输出 selfish。谢谢你。
到目前为止,列表的输出是 [['0.369', 'selfish', 'Future'] ['0.412', 'family', 'Future']] 列表是根据从最低到的十进制值排序的最大的都存储在 storage = [ ]
解决方案
如果我正确理解你,这里就是你要找的东西:
def binary_search(storage, target):
first = 0
last = len(storage) - 1
while first <= last:
mid = (first + last) // 2
value = float(storage[mid][0])
if target == value:
return storage[mid][1]
elif value < target:
first = mid + 1
else:
last = mid - 1
return -1
storage = [["0.369", "selfish", "Future"], ["0.412", "family", "Future"]]
target = float(input("Please enter the desired float "))
result = binary_search(storage, target)
print(result)
请确保添加数据验证。例如,如果用户输入无效值“abc”会发生什么?
推荐阅读
- ios - xcode ios模拟器不显示更新的标签栏控制器
- c# - 将 DateTime 对象从 12h 转换为 24h 格式?
- python - 如何将数据框中的 NaN 更改为 0?
- android - 如何从图库中获取所选图像的路径?
- sql - 根据从列或另一个表中的搜索返回一个表中的行并将这些行写入第三个表
- java - 导入 JHipster 项目后 Eclipse IDE 中的警告
- serialization - Hazelcast 的 DataSerializable writeData 和 readData 的序列化单元测试
- python - 无阻塞地服务单个 HTTP 请求
- winapi - 在什么情况下 RmGetList 为 lpdwRebootReasons 输出参数返回 2?
- ssh - GCP 连接失败 - SSH - 我们无法在端口 22 上连接到 VM