Inefficient summing
beginner
zyzhu2000 at gmail.com
Wed Oct 8 16:23:08 EDT 2008
Hi All,
I have a list of records like below:
rec=[{"F1":1, "F2":2}, {"F1":3, "F2":4} ]
Now I want to write code to find out the ratio of the sums of the two
fields.
One thing I can do is:
sum(r["F1"] for r in rec)/sum(r["F2"] for r in rec)
But this is slow because I have to iterate through the list twice.
Also, in the case where rec is an iterator, it does not work.
I can also do this:
sum1, sum2= reduce(lambda x, y: (x[0]+y[0], x[1]+y[1]), ((r["F1"],
r["F2"]) for r in rec))
sum1/sum2
This loops through the list only once, and is probably more efficient,
but it is less readable.
I can of course use an old-fashioned loop. This is more readable, but
also more verbose.
What is the best way, I wonder?
-a new python programmer
More information about the Python-list
mailing list