Using namedtuples field names for column indices in a list of lists

breamoreboy at gmail.com breamoreboy at gmail.com
Mon Jan 9 11:31:55 EST 2017


On Monday, January 9, 2017 at 2:22:19 PM UTC, Tim Chase wrote:
> On 2017-01-08 22:58, Deborah Swanson wrote:
> > 1) I have a section that loops through the sorted data, compares two
> > adjacent rows at a time, and marks one of them for deletion if the
> > rows are identical.
> > 
> > I'm using 
> > 
> > for i in range(len(records)-1):
> >     r1 = records[i]
> >     r2 = records[i+1]
> >     if r1.xx = r2.xx:
> > 		.
> > 		.
> > and my question is whether there's a way to work with two adjacent
> > rows without using subscripts?  
> 
> I usually wrap the iterable in something like
> 
>   def pairwise(it):
>     prev = next(it)
>     for thing in it:
>       yield prev, thing
>       prev = thing
> 
>   for prev, cur in pairwise(records):
>     compare(prev, cur)
> 
> which I find makes it more readable.
> 
> -tkc

Or from https://docs.python.org/3/library/itertools.html#itertools-recipes:-

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

This and many other recipes are available in the more-itertools module which is on pypi.


More information about the Python-list mailing list