从序列

时间:2018-05-12 20:19:31

标签: python string python-3.x

我有如下序列:

seq = "SDLKFJSOIDHFSODIF"

我想为此制作长度为5的所有不连续子序列。因为有5个可能的阅读框,我想要一个包含以下5个列表的列表:

[["SDLKF", "JSOID", "HFSOD"], ["DLKFJ", "SOIDH", FSODI"], ...]

每个列表中都不会出现所有字符,对于此示例,第5个列表将只有两个条目。这没关系。

如何创建一个将此概括为子序列的所有可能长度的函数?

谢谢! 千斤顶

1 个答案:

答案 0 :(得分:3)

通过嵌套列表理解:

>>> [[seq[i: i + 5] for i in range(j, len(seq), 5) if i + 5 <= len(seq)] for j in range(5)]
[['SDLKF', 'JSOID', 'HFSOD'],
 ['DLKFJ', 'SOIDH', 'FSODI'],
 ['LKFJS', 'OIDHF', 'SODIF'],
 ['KFJSO', 'IDHFS'],
 ['FJSOI', 'DHFSO']]