Whoops, scratch that part about encode /decode. On Sat, Jun 10, 2017 at 8:33 PM, Neal Fultz <nfu...@gmail.com> wrote:
> Yes, I mean zip compression :) > > Also, everyone's been posting decode functions, but encode is a bit harder > :). > > I think it should be equally easy to go one direction as the other. > Hopefully this email chain builds up enough info to update the docs for > posterity / future me. > > On Sat, Jun 10, 2017 at 8:27 PM, Joshua Morton <joshua.morto...@gmail.com> > wrote: > >> David: You're absolutely right, s/2/3 in my prior post! >> >> Neal: As for why zip (at first I thought you meant the zip function, not >> the zip compression scheme) is included and rle is not, zip is (or was), I >> believe, used as part of python's packaging infrastructure, hopefully >> someone else can correct me if that's untrue. >> >> --Josh >> >> On Sat, Jun 10, 2017 at 8:20 PM David Mertz <me...@gnosis.cx> wrote: >> >>> God no! Not in the Python 2 docs! ... if the recipe belongs somewhere >>> it's in the Python 3 docs. Although, I suppose it could go under 2 also, >>> since it's not actually a behavior change in the feature-frozen >>> interpreter. But as a Python instructor (and someone who remembers the >>> cool new features of Python 1.5 over 1.4 pretty well), my attitude about >>> Python 2 is "kill it with fire!" >>> >>> Your spelling of the one-liner is prettier, shorter, and more intuitive >>> than mine, and the same speed. >>> >>> On Sat, Jun 10, 2017 at 8:12 PM, Joshua Morton < >>> joshua.morto...@gmail.com> wrote: >>> >>>> 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/ >>>>> >>>> >>> >>> >>> -- >>> 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/