查找 N 对列表中的日期是否重叠

2023-12-27

给定开始时间和开始时间的列表,我想查找该列表是否包含重叠条目:

timesok = [('9:30', '10:00'), ('10:00', '10:30'), ('10:30', '11:00')]

wrongtimes1 = [('9:30', '10:00'), ('9:00', '10:30'), ('10:30', '11:00')]
wrongtimes2=[('9:30', '10:00'), ('10:00', '10:30'), ('9:15', '9:45')]

我从这个非常相似的问题中借用了一些代码测试重叠的日期对 https://stackoverflow.com/questions/9044084/efficient-date-range-overlap-calculation-in-python:

def test_overlap(dt1_st, dt1_end, dt2_st, dt2_end):

    r1 = Range(start=dt1_st, end=dt1_end)
    r2 = Range(start=dt2_st, end=dt2_end)
    latest_start = max(r1.start, r2.start)
    earliest_end = min(r1.end, r2.end)
    overlap = (earliest_end - latest_start)
    return overlap.seconds

我测试条目列表的函数:

def find_overlaps(times):
    pairs = list(combinations(times, 2))
    print pairs
    for pair in pairs:
        start1 = dt.strptime(pair[0][0], '%H:%M')
        end1 = dt.strptime(pair[0][1], '%H:%M')
        start2 = dt.strptime(pair[1][0], '%H:%M')
        end2 = dt.strptime(pair[1][1], '%H:%M')
        yield test_overlap(start1, end1, start2, end2) > 0

使用时,其工作原理如下:

In [257]: list(find_overlaps(timesok))
[(('9:30', '10:00'), ('10:00', '10:30')), (('9:30', '10:00'), ('10:30', '11:00')), (('10:00', '10:30'), ('10:30', '11:00'))]
Out[257]: [False, False, False]

In [258]: list(find_overlaps(wrongtimes1))
[(('9:30', '10:00'), ('9:00', '10:30')), (('9:30', '10:00'), ('10:30', '11:00')), (('9:00', '10:30'), ('10:30', '11:00'))]
Out[258]: [True, False, False]

In [261]: list(find_overlaps(wrongtimes2))
[(('9:30', '10:00'), ('10:00', '10:30')), (('9:30', '10:00'), ('9:15', '9:45')), (('10:00', '10:30'), ('9:15', '9:45'))]
Out[261]: [False, True, False]

However:

  1. 我仍在争论这对于大型列表是否非常有效。
  2. 我想知道是否有人可以提供更好的解决方案?

我建议用这种方法来测试重叠,这是一种查找日期所有交集的方法:

def test_overlap(dt1_st, dt1_end, dt2_st, dt2_end):
    return not (dt1_st < dt2_end and dt1_end >dt2_st)

这涵盖了所有重叠的可能性

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

查找 N 对列表中的日期是否重叠 的相关文章

随机推荐

  • Android Studio 中不支持类型“add-resource”

    我在运行时遇到资源合并问题gradle build命令 日志如下 错误 任务 frameworks base core res res common packageReleaseResources 执行失败 gt 文件中不支持类型 add
  • iPhone 上基于位移贴图的 3D 效果

    我正在尝试制作一个使用置换贴图实现 3D 效果的应用程序 在 Flash 中 可以使用位移过滤器来完成 如下所示 http flashflex com pixel bender displacement map fakes 3d effec
  • JPA 多个嵌入字段

    JPA实体类是否可以包含两个嵌入的 Embedded 字段 一个例子是 Entity public class Person Embedded public Address home Embedded public Address work
  • 在 Visual Studio 2017 中生成 .NET Core 控制台应用程序 .exe

    我使用的是 Visual Studio 2017 我启动了一个小型控制台应用程序 我创建了一个 NET Core 应用程序 然后我想构建 exe 文件 但我得到的只是 dll 文件 没有任何 exe 文件 你能帮我吗 我需要在 Visual
  • Mysql从二进制日志读取数据时从master出错1236

    我有 2 个具有主 从配置的 MySql 并且复制失败 MySql Master崩溃了 新的寄存器在mysql bin index被创建 我删除了这个新的寄存器 因为文件系统中不存在该文件 然后MySql Master重启成功 现在 我在从
  • 使 Jackson 子类型可扩展,无需编辑超类型 java 文件

    在我的公司 我们有一个固定的 JSON 消息结构 headerVal1 headerVal2 customPayload payloadType 我想要某种库 它允许我不关心公司定义的消息结构 而只是发送和接收有效负载 我的想法是 将公司模
  • Java如何在Intellij中找到spark、Hadoop和AWS jar

    我正在 Java 中的 IntelliJ 上运行 Spark 应用程序 我已在 pom xml 中添加了 Spark Hadoop 和 AWS 依赖项 但不知何故 AWS 凭证并未加载 我得到的确切错误是Caused by com amaz
  • 如何在Asp.net的图像控件中显示数据库中的图像?

    如何在Asp net的图像控件中显示数据库中的图像 我们必须在asp net页面中显示员工的图像及其详细信息 但问题是如何在asp net图像控件上显示图像 因为图像控件通过属性ImageUrl来拍照 请指导 您可以创建一个 HttpHan
  • 单个 lambda、多个 cloudwatch 日志组

    运行 AWS lambda 后 将填充单个 cloudwatch 日志组 有没有一种方法可以从单个 AWS lambda 填充两个 不同的 cloudwatch 日志组 我搜索了一下但找不到答案 让我知道是否可能 无法从单个 lambda
  • NoReverseMatch at / Reverse for 'post_detail' 未找到关键字参数 '{'pk': ''}'

    我一直在尝试让这个应用程序工作 我运行 python manage py runserver 一切都很好 我能够看到该网站 以超级用户身份登录 发表评论 但是在尝试查看帖子时我开始收到错误 现在 如果我只是访问该网站 就会收到错误消息 我收
  • Javascript/jQuery onclick 不起作用

    我制作了一个 test html 文档来测试脚本 不知怎的 它不起作用 我不明白为什么什么也没有发生 脚本位于 tags 中并用 tag 包裹 CSS 也有它的 tags 为什么它不起作用 这是代码
  • Html 敏捷包帮助

    我正在尝试从网站上抓取一些信息 但找不到适合我的解决方案 我在互联网上读到的每一个代码都会至少产生一个错误 即使他们主页上的示例代码也会给我带来错误 My code HtmlDocument doc new HtmlDocument doc
  • 我可以使 Dialogflow 意图至少需要一个经过训练的实体吗?

    我知道如何使意图需要任何参数值 之后意图将强制获取该值 但有可能让它强制得到atleast给定实体参数之一 您可以为该意图启用 Webhook 实现 如果未提供实体 则重新提示用户至少提供一组实体之一
  • 静态与 Malloc

    与使用 malloc 相比 块作用域中的 static 关键字有什么优势 例如 功能A f static int x 7 功能B f int x malloc sizeof int if x NULL x 7 如果我理解正确的话 这两个程序
  • symfony 5 - 事件未被调度

    当我提交订单时 我使用事件订阅者来处理一些操作 问题是我的事件没有被调度 但是 symfony 能够找到他 因为他告诉我我的 OrderEvent ORDER CREATE 是孤立的 我预计执行会停止die Hello you from s
  • maven项目中的getClass().getResourceAsStream()

    我的 Maven 项目的 pom xml 如下所示
  • BigDecimal stripTrailingZeros 不适用于零

    我的代码中遇到了奇怪的错误 它与 new BigDecimal 1 2300 stripTrailingZeros returns 1 23 正确的 但 new BigDecimal 0 0000 stripTrailingZeros re
  • clojure/ClojureScript 中的字符串化/解析 edn

    在 JavaScript 中 我们可以通过以下方式将 js 数据结构转换为 JSON 字符串 JSON stringify somedata somesubdata 在其他地方 我们可以通过以下方式将其再次解析为 JS 数据结构 var m
  • EditText 的 requestFocus() 不适用于运行 android P (API 28) 的设备

    我在用EditText s接受 OTP 用户重点关注下一步EditText一旦他在字段中输入数字 等等 它在所有设备上都能正常工作 但在运行 android OS P 即 API 28 的设备上 requestFocus 不起作用 并且用户
  • 查找 N 对列表中的日期是否重叠

    给定开始时间和开始时间的列表 我想查找该列表是否包含重叠条目 timesok 9 30 10 00 10 00 10 30 10 30 11 00 wrongtimes1 9 30 10 00 9 00 10 30 10 30 11 00