【发布时间】:2020-06-26 10:34:16
【问题描述】:
是否有一种 Pythonic 方法来确定一个元组是否是另一个元组的切片(而不仅仅是一个子集)?
例如,如果我有以下元组:
t1 = (2, 3, 4)
t2 = (1, 2, 3, 4, 5)
t3 = (3, 4, 2, 5)
那么 t1 是 t2 的一个切片,但只是 t3 的一个子集。我正在寻找类似“t1 in t2”的东西。一个元组沿另一个元组的基于窗口的移动是“可实现的”,但可能有一种我不知道的更有效的方法。
【问题讨论】:
-
从概念上讲,我认为您不会比您建议的“基于窗口的移动”做得更好
-
这个问题被标记为重复的问题不是这个问题的重复。这个问题是关于提取子模式的。相似但略有不同。
-
我用 Boyer Moore 做了一个实验,但是,它甚至比链接的类似问题的一个答案中包含的“奖励子查找器”还要慢 - 可能是因为 int 的坏字符表元组不能是数组或列表(这会导致大量内存消耗),但必须是字典。