用python将一个大列表从文件打印成多个子列表

2024-09-29 21:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我在一个文件中有一个很长的序列,我希望将这个序列拆分成更小的子序列,但是我希望每个子序列都与前一个序列有一个重叠,并将它们放入一个列表中。我的意思是:

(对这个神秘的序列表示歉意,这些都在1行上)

file1.txt
abcdefessdfekgheithrfkopeifhghtryrhfbcvdfersdwtiyuyrterdhcbgjherytyekdnfiwytowihfiwoeirehjiwoqpft


list1 = ["abcdefessdfekgheithrfkopeifhght", "fhghtryrhfbcvdfersdwtiyuyrterdhc", "erdhcbgjherytyekdnfiwyt", "nfiwytowihfiwoeirehjiwoqpft"]

目前,我可以使用以下代码将每个序列拆分为较小的saubsequence,而无需重叠:

^{pr2}$

在上面的代码中,n指定将列表拆分为多少个子序列。在

我在想抓住每个子序列的末尾,然后通过硬编码将它们连接到列表中元素的末尾。。。但这将是低效和困难的。有没有一个简单的方法可以做到这一点?在

实际上,我需要重叠大约100个字符。在

谢谢各位


Tags: 文件代码txt列表序列file1行上末尾
2条回答
seq="abcdefessdfekgheithrfkopeifhghtryrhfbcvdfersdwtiyuyrterdhcbgjherytyekdnfiwytowihfiwoeirehjiwoqpft"
>>> n = 4
>>> overlap = 5
>>> division = len(seq)/n
>>> [seq[i*division:(i+1)*division+overlap] for i in range(n)]
['abcdefessdfekgheithrfkopeifhg', 'eifhghtryrhfbcvdfersdwtiyuyrt', 'yuyrterdhcbgjherytyekdnfiwyto', 'iwytowihfiwoeirehjiwoqpft']

这样做可能会稍微有点效率

^{pr2}$

如果要将序列seq拆分为长度为length的子序列,每个子序列及其后续序列之间共享overlap个字符/元素:

def split_with_overlap(seq, length, overlap):
    return [seq[i:i+length] for i in range(0, len(seq), length - overlap)]

然后在原始数据上进行测试:

^{pr2}$

相关问题 更多 >

    热门问题