<p>如果您想要一个简单的方法,可以考虑使用<a href="https://stackoverflow.com/questions/8269916/what-is-sliding-window-algorithm-examples">sliding window</a>技术。在<a href="https://more-itertools.readthedocs.io/en/latest/api.html#more_itertools.windowed" rel="nofollow noreferrer">more_itertools</a>中提供了一个实现,因此您不必自己创建一个。如果您<code>pip install more_itertools</code>,这很容易使用。在</p>
<p><strong>简单示例</strong></p>
<pre><code>>>> from collections import Counter
>>> import more_itertools
>>> s = "GATCCAGATCCCCATAC"
>>> Counter(more_itertools.windowed(s, 2))
Counter({('A', 'C'): 1,
('A', 'G'): 1,
('A', 'T'): 3,
('C', 'A'): 2,
('C', 'C'): 4,
('G', 'A'): 2,
('T', 'A'): 1,
('T', 'C'): 2})
</code></pre>
<p>上面的例子演示了使用<code>windowed</code>和<code>Counter</code>来获取所需的大部分信息。在</p>
<p><strong>说明</strong></p>
<p>一个长度为<code>k=2</code>的“窗口”或容器在序列中一步一步地滑动(例如<code>step=1</code>)。每个新组都作为<code>Counter</code>字典的键添加。每次发生,计数都会递增。最后一个<code>Counter</code>对象主要报告所有计数,并包括其他<a href="https://pymotw.com/2/collections/counter.html" rel="nofollow noreferrer">helpful features</a>。在</p>
<p><strong>最终解决方案</strong></p>
<p>如果实际的字符串对很重要,那也很简单。我们将创建一个通用函数,将字符串分组并适用于任何k mers:</p>
^{pr2}$