如何在 python 中的示例字符串中找到长度为 k 的所有重叠子字符串

how to find all overlapping substrings of length k in a sample string in python

str1 = "ABCDEF"

我想找到上面字符串中所有长度为3的子串的列表,包括重叠 例如:

list1 = ['ABC','BCD','CDE','DEF']

我尝试了以下方法,但它错过了重叠部分:

n = 3
lst = [str1[i:i+n] for i in range(0, len(str1), n)]
x = "ABCDEF"

print ([x[i:i+3] for i in range(len(x)-2)])

输出:

['ABC', 'BCD', 'CDE', 'DEF']

更一般地说:

x = "ABCDEF"

n = 2

print ([x[i:i+n] for i in range(len(x)-n+1)])

输出:

['AB', 'BC', 'CD', 'DE', 'EF']

更一般地说:

x = "ABCDEF"

for n in range(len(x)+1):
    print ([x[i:i+n] for i in range(len(x)-n+1)])

输出:

['', '', '', '', '', '', '']
['A', 'B', 'C', 'D', 'E', 'F']
['AB', 'BC', 'CD', 'DE', 'EF']
['ABC', 'BCD', 'CDE', 'DEF']
['ABCD', 'BCDE', 'CDEF']
['ABCDE', 'BCDEF']
['ABCDEF']