Velocity Reviews > syntax question

# syntax question

AF
Guest
Posts: n/a

 04-05-2004
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.

Thanks!

AF

Erik Max Francis
Guest
Posts: n/a

 04-05-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 && http://www.velocityreviews.com/forums/(E-Mail Removed) && 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

Elaine Jackson
Guest
Posts: n/a

 04-06-2004
>>> L=[(1,2),(10,20),(100,200)]
>>> map(None,*L)

[(1, 10, 100), (2, 20, 200)]
>>> sum(map(None,*L)[0])

111

"AF" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) ...
| 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.
|
| Thanks!
|
| AF