grouping a flat list of number by range
paddy3118 at netscape.net
Fri Jun 2 08:18:26 CEST 2006
Jim Segrave wrote:
> In article <1149202780.780252.242110 at f6g2000cwb.googlegroups.com>,
> Paddy <paddy3118 at netscape.net> wrote:
> >What I ran was more like the version below, but i did a quick
> >separation of the line that has the ';' in it and goofed.
> >>>> def interv2(inlist):
> >... for i,val in enumerate(inlist):
> >... if i==0:
> >... tmp = val
> >... elif val != valinc:
> >... yield [tmp, valinc]; tmp = val
> >... valinc = val+1
> >... yield [tmp, valinc]
> >>>> list(interv2(inlist))
> >[[3, 4], [6, 9], [12, 14], [15, 16]]
> Fails on an empty list, as tmp is not defined when it hits the yield
> Jim Segrave (jes at jes-2.demon.nl)
Yep, I still, purposfully, decided not to put any guard checks in
Its very easy to add.
It detracts from the algorithm.
It might never be called with an empty list in-situ.
It is correct for the original posters testcases.
Yah gotta leave-em something to do ;-)
But you-too are right. Don't just cut-n-paste newsgroup solutions. they
need testing for your particular use. I doubt anyone on C.L.P. would be
malicious, but your actual use of a function having a wider scope to
inputs than mentioned might be fairy common.
(Damn, I wanted to use 'caveat emptor', but it does not apply as
nothing is being bought. Oh well :-)
More information about the Python-list