如何在列表中查找特定长度的重复序列?

时间:2019-03-26 10:41:11

标签: python

我有很长的字符串列表。我必须找出列表中是否重复了 n 个连续字符串的序列。

在寻找此类序列时,我一直在寻找其他答案。但是,它们大多数集中在检测连续重复的单个已知序列上。在这种情况下,它们可以是不同的序列,并且之间有随机字符串重复。

例如:

long_list = ['execve','brk','getpid','time','read','write','exit','read','call','execve','brk','getpid','read','write','exit']

如果n = 3,则算法应输出如下内容:

{['execve','brk','getpid']:2,['read','write','exit']:2}

如果以前已经回答过这样的问题,我已经看了很多,但是我找不到任何相关的内容。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

像这样? 现在检查发生的情况是否比1更普遍。

from collections import Counter

long_list = ['execve','brk','getpid','time','read','write','exit','read','call','execve','brk','getpid','read','write','exit']

def find_length_n(n):
    matches = []
    for idx, word in enumerate(long_list):
        tmp_string = long_list[idx:idx+n]
        matches.append(str(tmp_string))

    for key, val in Counter(matches).items():
        if val >= 2:
            print(key, val)

find_length_n(3)

将输出:

['execve', 'brk', 'getpid'] 2
['read', 'write', 'exit'] 2

答案 1 :(得分:0)

也许您正在寻找类似的东西吗?

 long_list.count('execve')
 2