当前,我正在处理非常大的数据,这种方法耗时的分析部分是这种方法:
def findall_seq_in_seq(subseq, seq):
indexes = []
len_subseq = len(subseq)
for i in range(len(seq) - len_subseq + 1):
if seq[i:i + len_subseq] == subseq:
indexes.append((i, i + len_subseq))
return indexes
seq_pairs = [
([1,2,3], [0,1,2,3]),
(["running"], ["I", "am", "running"]),
(["house"], ["A", "small", "house", "is", "better", "than", "no", "house"]),
(["nothing"], ["You", "will", "not", "find", "it", "here"]),
]
for sub, seq in seq_pairs:
print(findall_seq_in_seq(sub, seq))
此方法采用一个列表序列和一个较小的列表子序列,并返回在列表中出现的子序列的索引。
我主要将其用于字符串比较,并且需要索引才能在其他地方进行查找。
可悲的是,我不知道如何改进代码。我认为正则表达式或字符串比较不会比列表比较好,但也许有人在这里有更好的主意? 我真的很感谢您的帮助!