syntax question

Erik Max Francis max at alcyone.com
Mon Apr 5 17:26:39 EDT 2004


AF wrote:

> If I have a list of touples:
> 
> l = [(x1, y1), (x2, y2), ...]
> 
> Is there a 1 line way to extract and get the sum of each x and y
> column.  I can do it this way with 2 lines of code and iterating
> through the list twice:
> 
> sumx = sum([x for x, y in l])
> sumy = sum([y for x, y in l])
> 
> Is there a 1 liner way to get the sums of both x and y and only
> iterate thru the list once?
> 
> Also, is there a way to extract a list of x's and a list of y's from
> the touple list?  1 line of course.

Use zip:

>>> l = ((1, 2), (3, 4), (5, 6))
>>> zip(*l)
[(1, 3, 5), (2, 4, 6)]
>>> xSum, ySum = map(sum, zip(*l))
>>> xSum
9
>>> ySum
12

-- 
 __ Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
/  \ San Jose, CA, USA && 37 20 N 121 53 W && AIM erikmaxfrancis
\__/ I do this for the love of music / Not for the glitter and gold
    -- India Arie



More information about the Python-list mailing list