gpt4 book ai didi

python - 在python中将文件中的大列表打印到具有重叠序列的多个子列表中

转载 作者:行者123 更新时间:2023-12-01 06:09:18 26 4
gpt4 key购买 nike

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

(对神秘的序列表示歉意,这一切都在一行)

file1.txt
abcdefessdfekgheithrfkopeifhghtryrhfbcvdfersdwtiyuyrterdhcbgjherytyekdnfiwytowihfiwoeirehjiwoqpft


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

我目前可以使用以下代码将每个序列分割成更小的子序列,而不会重叠:

def chunks(seq, n):
division = len(seq) / float (n)
return [ seq[int(round(division * i)): int(round(division * (i + 1)))] for i in xrange(n) ]

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

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

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

谢谢大家

最佳答案

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']

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

>>> [seq[i:i+division+overlap] for i in range(0,n*division,division)]
['abcdefessdfekgheithrfkopeifhg', 'eifhghtryrhfbcvdfersdwtiyuyrt', 'yuyrterdhcbgjherytyekdnfiwyto', 'iwytowihfiwoeirehjiwoqpft']

关于python - 在python中将文件中的大列表打印到具有重叠序列的多个子列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6687619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com