gpt4 book ai didi

python - 在没有集合的情况下减去两个范围之间的重叠

转载 作者:太空狗 更新时间:2023-10-29 20:36:48 24 4
gpt4 key购买 nike

没有设置!

我不能使用 Sets 因为:

  • 范围太长。
  • 它们会占用太多内存
  • 集合本身的创建将花费太长时间。

仅使用范围的端点,是否存在减去两个范围列表的最佳方法?

示例:

r1 = (1, 1000), (1100, 1200)  
r2 = (30, 50), (60, 200), (1150, 1300)

r1 - r2 = (1, 29), (51, 59), (201, 1000), (1100, 1149)

其他信息:

  • r2 不必与 r1 重叠
  • r1 和 r2 不会有与其他对重叠的对。例如,r1 不会同时具有 (0,30) 和 (10, 25)

谢谢。

最佳答案

interval软件包可能会提供您需要的一切。

from interval import Interval, IntervalSet
r1 = IntervalSet([Interval(1, 1000), Interval(1100, 1200)])
r2 = IntervalSet([Interval(30, 50), Interval(60, 200), Interval(1150, 1300)])
print(r1 - r2)

>>> [1..30),(50..60),(200..1000],[1100..1150)

关于python - 在没有集合的情况下减去两个范围之间的重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6462272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com