在元组列表上使用二等分,但仅使用第一个值进行比较

2023-11-26

I read 那个问题关于如何使用bisect在元组列表上,我用这些信息来回答那个问题。它有效,但我想要一个更通用的解决方案。

Since bisect不允许指定key函数,如果我有这个:

import bisect
test_array = [(1,2),(3,4),(5,6),(5,7000),(7,8),(9,10)]

我想找到第一个项目x > 5对于那些(x,y)元组(不考虑y无论如何,我目前正在这样做:

bisect.bisect_left(test_array,(5,10000))

我得到了正确的结果,因为我know那不y大于 10000,所以bisect指向我的索引(7,8)。如果我把1000相反,这是错误的。

对于整数,我可以这样做

bisect.bisect_left(test_array,(5+1,))

但在一般情况下,当可能存在浮动时,在不知道第二个元素的最大值的情况下如何处理?

test_array = [(1,2),(3,4),(5.2,6),(5.2,7000),(5.3,8),(9,10)]

我已经尝试过这个:

bisect.bisect_left(test_array,(min_value+sys.float_info.epsilon,))

它不起作用,但我已经尝试过:

bisect.bisect_left(test_array,(min_value+sys.float_info.epsilon*3,))

它起作用了。但这感觉像是一个糟糕的黑客。有什么干净的解决方案吗?


从 Python 3.10 开始,bisect终于支持了key!因此,如果您使用的是 3.10 或更高版本,只需使用key。但如果你不...

bisect支持任意序列。如果您需要使用bisect使用密钥,而不是将密钥传递给bisect,您可以将其构建到序列中:

class KeyList(object):
    # bisect doesn't accept a key function before 3.10,
    # so we build the key into our sequence.
    def __init__(self, l, key):
        self.l = l
        self.key = key
    def __len__(self):
        return len(self.l)
    def __getitem__(self, index):
        return self.key(self.l[index])

然后你可以使用bisect with a KeyList,具有 O(log n) 性能并且无需复制bisect获取源代码或编写自己的二分搜索:

bisect.bisect_right(KeyList(test_array, key=lambda x: x[0]), 5)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在元组列表上使用二等分,但仅使用第一个值进行比较 的相关文章

  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 使用 kivy textinput 的 'input_type' 属性的问题

    您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
  • Python zmq SUB 套接字未接收 MQL5 Zmq PUB 套接字

    我正在尝试在 MQL5 中设置一个 PUB 套接字 并在 Python 中设置一个 SUB 套接字来接收消息 我在 MQL5 中有这个 include
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • “隐藏”内置类对象、函数、代码等的名称和性质[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很好奇模块中存在的类builtins无法直接访问的 例如 type lambda 0 name function of module
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • import matplotlib.pyplot 给出 AttributeError: 'NoneType' 对象没有属性 'is_interactive'

    我尝试在 Pycharm 控制台中导入 matplotlib pyplt import matplotlib pyplot as plt 然后作为回报我得到 Traceback most recent call last File D Pr
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我

随机推荐

  • Akka 中 Actorref.tell 和 inbox.send 的区别

    所以我开始学习 Akka 并尝试 typesafe 中的示例 所以 Hello Akka 应用程序有以下代码 import akka actor ActorRef ActorSystem Props Actor Inbox import s
  • 如何计算两个日期之间的周数?

    如何计算两个日期之间的周数 例如如下 Declare StartDate as DateTime 01 Jan 2009 Declare EndDate as DateTime 01 June 2009 StartDate and EndD
  • 我可以在 LESS css 字符串插值中进行数学运算吗?

    我的这个少了 我不知道如何在字符串内进行数学运算 bp tablet landscape 1024px bp tablet portrait 768px tablet landscape only only screen and min w
  • 如何在 grails 中断开对象与其休眠会话的连接?

    我正在尝试执行此操作 但出现错误 具有相同标识符值的不同对象已与会话关联 看来我需要从休眠会话中删除 dbObject def object messageParserService parseMessage messageType mes
  • 使用 XML1.1 解析 unicode 字符 (0x2)

    在我的 Java 应用程序中 我需要解析包含控制字符的 XML 文档0x2在 CDATA 内 我尝试了几种方法但无法通过 我想避免任何类型的编码 XML1 1有什么办法吗 我需要解析 CDATA 中包含控制字符 0x2 的 xml 那么那不
  • 我的网站 IE 总是崩溃,无法调试

    我的网站突然开始使 Internet Explorer 崩溃 网站加载并开始执行 javascript 但机器在某个地方爆炸了 我什至没有收到脚本错误 它只是崩溃了 我尝试使用内置调试器手动单步执行每一行 js 但问题当然不会发生 如果我选
  • .NET Framework x509Certificate2 类,HasPrivateKey == true && PrivateKey == null?

    我正在尝试使用最初使用 MMC 的 证书 管理单元导入到 Windows 10 计算机上的 CurrentUser 密钥库中的 X509 证书 相同的过程已在 Windows 8 1 计算机上进行了测试 得到了相同的结果 使用标准 Powe
  • 用java保存时图像改变颜色[重复]

    这个问题在这里已经有答案了 当我保存这张图片时 用这个方法 private final static Path ROOT PATH Paths getPath C images private static void saveImageFr
  • 删除变量并不会从 RAM 内存中删除其内存

    我广泛使用 Python Canopy 进行地球科学应用 因为我的应用程序很消耗内存 所以我试图找到方法来删除程序中不再需要的变量 我尝试使用 del 命令来删除变量内存 但我发现 Canopy 使用的空间仍然是相同的 关于如何从内存中完全
  • RAM <4GB 的 64 位 VM 上 Java 中的对象标头大小

    我想知道如果 JVM 的可用 RAM 是 4GB 是否有某种方法可以让 64 位 VM 使用 8 字节对象头而不是 12 字节对象头 或者说在 Linux 上是这样的 如果不是在 Windows 上的话 有人可以用这段代码测试一下吗 imp
  • MySQL 案例/如果/那么

    我正在尝试在 MySQL 中构建一个查询 其中我有某个东西的数字库存水平 并且根据该库存水平 我希望它返回另一个值 即颜色代码 例如 如果库存水平 10000 则为绿色 这是我的例子 我有一个 Beer 表 用于保存啤酒信息 还有一个 Be
  • Windows 上使用 YouCompleteMe 完成 Vim 补全

    我拼命地想要得到你使我完整在 Windows 上工作 作者明确表示没有对 Windows 的官方支持 所以这是公平的 虽然有a wiki要在 Windows 上构建它 你会发现 1 2 的人在线声称他们在 Windows 上成功构建了它 而
  • JavaMail 问题:无法向 SMTP 主机发送命令

    我正在尝试执行 java 邮件 但收到错误 无法将命令发送到 SMTP 主机 任何帮助 将不胜感激 如果可能的话 以及任何未来问题的解决方案 确切的异常是 javax mail MessagingException Can t send c
  • Hibernate 支持嵌套事务吗?

    如果我有这个 Start transaction1 Call someMethod Start transaction2 Call someOtherMethod Start tranaction3 如果transaction3回滚 tra
  • 如何获取R中函数的包名? [复制]

    这个问题在这里已经有答案了 我正在调试一些代码 我想我可能在两个包中有两次相同的功能 我想输出函数的包名称 因为它将由 R 控制台执行 例子 function package name print gt 基础 function packag
  • jQuery - 确保检查所有单选组

    我想使用 jQuery 循环访问多个 动态 单选按钮组 如果有任何一个没有进行选择 它会抛出错误并停止表单提交 这是我迄今为止的努力 form submit function radio each function if this val
  • 使用xchg时需要mfence吗

    我有一套并进行测试xchg基于装配锁 我的问题是 我们是否需要使用内存防护 mfence sfence or lfence 当使用xchg操作说明 Edit 64 位平台 采用 Intel nehalem 正如其他答案中所述 这里的锁前缀是
  • 通过 ssh (gitosis) 访问 git 存储库时如何包含 ssh 私钥 rsa 密钥?

    此时我已经通过 gitosis 添加了一个 git 存储库 我使用的手册是http scie nti st 2007 11 14 hosting git repositories the easy and secure way 我可以克隆它
  • djangorest框架https用于绝对url?

    即使页面是使用 https 加载的 托管 api 的服务器也会返回 http 的绝对 URL 这是否与 django Rest 框架有关 因为似乎没有任何明显的方法可以解决这个问题 相关的是 Meta 类中的 url 字段 class Ne
  • 在元组列表上使用二等分,但仅使用第一个值进行比较

    I read 那个问题关于如何使用bisect在元组列表上 我用这些信息来回答那个问题 它有效 但我想要一个更通用的解决方案 Since bisect不允许指定key函数 如果我有这个 import bisect test array 1