grouping a flat list of number by range

Jim Segrave jes at nl.demon.net
Thu Jun 1 18:53:43 EDT 2006


In article <1149201416.196975.123370 at c74g2000cwc.googlegroups.com>,
Paddy <paddy3118 at netscape.net> wrote:
>=== interv2 ===
>>>> 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]]
>
>=== END interv2 ===

This doesn't actually run, changing it to make it do so:

def interv2(inlist):
    tmp = valinc = 0
    for i,val in enumerate(inlist):
        if i==0:
            tmp = val
            valinc = val + 1
        elif val != valinc:
            yield [tmp, valinc]
            tmp = val
            valinc = val+1
    yield [tmp, valinc]

it now works, but returns [0, 0] when passed an empty list, when it
should return nothing at all





-- 
Jim Segrave           (jes at jes-2.demon.nl)




More information about the Python-list mailing list