作为一个普遍感兴趣的问题,我想知道是否有更优雅/有效的方法来做到这一点.我有一个函数比较两个日期的开始/结束元组,如果它们相交,则返回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 实现,以便我能够理解它们是什么以及它们如何工作,我遇到了 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)
这里有什么我不明白的吗?