小编jjo*_*jon的帖子

python日期间隔交集

作为一个普遍感兴趣的问题,我想知道是否有更优雅/有效的方法来做到这一点.我有一个函数比较两个日期的开始/结束元组,如果它们相交,则返回true.

from datetime import date
def date_intersection(t1, t2):
    t1start, t1end = t1[0], t1[1]
    t2start, t2end = t2[0], t2[1]

    if t1end < t2start: return False
    if t1end == t2start: return True
    if t1start == t2start: return True
    if t1start < t2start and t2start < t1end: return True
    if t1start > t2start and t1end < t2end: return True
    if t1start < t2start and t1end > t2end: return True
    if t1start < t2end and t1end > t2end: return True
    if t1start > t2start …
Run Code Online (Sandbox Code Playgroud)

python datetime intersection

13
推荐指数
3
解决办法
9870
查看次数

patricia尝试的python实现

四处寻找尝试的 python 实现,以便我能够理解它们是什么以及它们如何工作,我遇到了 Justin Peel 的patricia trie并发现它非常有指导意义:它足够简单,对于像我这样的新手来说,可以玩它并且从中学习。

但是,我认为我不明白有些事情:

使用贾斯汀的类 patricia() 因此:

>>> p = patricia()
>>> words = ['foo','bar','baz']
>>> for x in words:
...     p.addWord(x)
Run Code Online (Sandbox Code Playgroud)

我得到一个字典,看起来像这样:

>>> p._d
{'b': ['a', {'r': ['', {}], 'z': ['', {}]}], 'f': ['oo', {}]}
Run Code Online (Sandbox Code Playgroud)

addWord() 和 isWord() 按预期工作,但 isPrefix() 显示以下行为让我感到困惑:

>>> p.isPrefix('b')
True
>>> p.isPrefix('f')
True
>>> p.isPrefix('e')
False
Run Code Online (Sandbox Code Playgroud)

不错,符合预期;进而

>>> p.isPrefix('ba')
True
Run Code Online (Sandbox Code Playgroud)

也不错,但是:

>>> p.isPrefix('bal')
True
Run Code Online (Sandbox Code Playgroud)

此外:

>>> p.isPrefix('ballance')
True
>>> p.isPrefix('ballancing act')
True
Run Code Online (Sandbox Code Playgroud)

这里有什么我不明白的吗?

python patricia-trie

5
推荐指数
1
解决办法
3934
查看次数

标签 统计

python ×2

datetime ×1

intersection ×1

patricia-trie ×1