擅长:python、mysql、java
<p><a href="https://docs.python.org/3/library/itertools.html" rel="nofollow noreferrer">Itertools</a>爱你,希望你快乐:</p>
<pre><code>from itertools import chain, groupby
def run_length_encoder(src):
return list(
# chain.from_iterable flattens the series of tuples we make inside the
# loop into a single list.
chain.from_iterable(
# groupby returns an iterable (item, group) where group is an
# iterable that yields a copy of `item` as many times as that item
# appears consecutively in the input. Therefore, if you take the
# length of `group`, you get the run length of `item`. This
# whole expression then returns a series of (letter, count)
# tuples.
(letter, len(list(group))) for letter, group in groupby(src)
)
)
print(run_length_encoder("aajjjjiiiiohhkkkkkkkkhkkkk"))
</code></pre>