Like a matrix

Peter Otten __peter__ at web.de
Sun Oct 26 06:06:07 EST 2003


Yazar Yolait wrote:

> I have a string of numbers in a file like so:
> 0 3 23.3 352 45 4
> 4 45 23 54 4 5.4 .6
> 
> I need to average them horizontally and vertically.  Horizontally is easy
> since I'm reading one line at a time, but how can I do it vertically like
> 0 and 4, 3 and 45, etc.
> I was thinking of a dictionary but how do you add entries to a dictionary,
> you can't can you?  Like I would add 0 to a dictionary that holds the 0th
> column.  And then when I get to line 2, I would add 4 to the dictionary
> which has the 0th column data.

>>> from __future__ import division
>>> def avg(alist): return sum(alist)/len(alist)
...
>>> u = [1,2,3]
>>> v = [3,2,1]
>>> avg(u)
2.0

So that was the easy part. Now let's create the columns:

>>> m, n, o = zip(u, v)
>>> m
(1, 3)
>>> n
(2, 2)
>>> avg(o)
2.0
>>>

So that wasn't particular hard, now you see it :-)
zip() returns tuples instead of lists, but as you see above that does no
harm.

Peter





More information about the Python-list mailing list