擅长:python、mysql、java
<p>您可以使用<a href="https://docs.python.org/2/library/itertools.html#itertools.groupby" rel="noreferrer">^{<cd1>}</a>:</p>
<pre><code>from itertools import groupby
grouped = [list(g) for k, g in groupby(string)]
</code></pre>
<p>这将生成每个字母组作为列表列表。在</p>
<p>您可以一步到位地将其转化为RLE:</p>
^{pr2}$
<p>每个<code>k</code>都是被分组的字母,每个<code>g</code>都是产生N次相同字母的迭代器;<code>sum(1 for _ in g)</code>表达式以最有效的方式计算这些字母。在</p>
<p>演示:</p>
<pre><code>>>> from itertools import groupby
>>> string = 'aabccccaaa'
>>> [list(g) for k, g in groupby(string)]
[['a', 'a'], ['b'], ['c', 'c', 'c', 'c'], ['a', 'a', 'a']]
>>> ''.join(['{}{}'.format(k, sum(1 for _ in g)) for k, g in groupby(string)])
'a2b1c4a3'
</code></pre>