Another is [(k, len(list(g))) for k, g in groupby(l)]
It might be worth adding it to the list of recipies either at https://docs.python.org/2/library/itertools.html#itertools.groupby or at https://docs.python.org/2/library/itertools.html#recipes, though. On Sat, Jun 10, 2017 at 8:07 PM David Mertz <me...@gnosis.cx> wrote: > Here's a one-line version: > > from itertools import groupby > rle_encode = lambda it: ( > (l[0],len(l)) for g in groupby(it) for l in [list(g[1])]) > > Since "not every one line function needs to be in the standard library" is > a guiding principle of Python, and even moreso of `itertools`, probably > this is a recipe in the documentation at most. Or maybe it would have a > home in `more_itertools`. > > > On Sat, Jun 10, 2017 at 7:20 PM, Neal Fultz <nfu...@gmail.com> wrote: > >> Hello python-ideas, >> >> I am very new to this, but on a different forum and after a couple >> conversations, I really wished Python came with run-length encoding >> built-in; after all, it ships with zip, which is much more complicated :) >> >> The general idea is to be able to go back and forth between two >> representations of a sequence: >> >> [1,1,1,1,2,3,4,4,3,3,3] >> >> and >> >> [(1, 4), (2, 1), (3, 1), (4, 2), (3, 3)] >> >> where the first element is the data element, and the second is how many >> times it is repeated. >> >> I wrote an encoder/decoder in about 20 lines ( >> https://github.com/nfultz/rle.py/blob/master/rle.py ) and would like to >> offer it for the next version; I think it might fit in nicely in the >> itertools module, for example. I am curious about your thoughts. >> >> Best, >> >> -Neal >> >> _______________________________________________ >> Python-ideas mailing list >> Python-ideas@python.org >> https://mail.python.org/mailman/listinfo/python-ideas >> Code of Conduct: http://python.org/psf/codeofconduct/ >> >> > > > -- > Keeping medicines from the bloodstreams of the sick; food > from the bellies of the hungry; books from the hands of the > uneducated; technology from the underdeveloped; and putting > advocates of freedom in prisons. Intellectual property is > to the 21st century what the slave trade was to the 16th. > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/