formatted output
Roy Smith
roy at panix.com
Tue May 7 08:42:21 EDT 2013
In article <add22437-64a4-4dfb-b6d9-28832e7698b4 at googlegroups.com>,
Sudheer Joseph <sjo.india at gmail.com> wrote:
> Dear members,
> I need to print few arrays in a tabular form for example below
> array IL has 25 elements, is there an easy way to print this as
> 5x5 comma separated table? in python
>
> IL=[]
> for i in np.arange(1,bno+1):
> IL.append(i)
> print(IL)
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> in fortran I could do it as below
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> integer matrix(5,5)
> in=0
> do, k=1,5
> do, l=1,5
> in=in+1
> matrix(k,l)=in
> enddo
> enddo
> m=5
> n=5
> do, i=1,m
> write(*,"(5i5)") ( matrix(i,j), j=1,n )
> enddo
> end
>
Excellent. My kind of programming language! See
http://www.python.org/doc/humor/#bad-habits.
Anyway, that translates, more or less, as follows.
Note that I'm modeling the Fortran 2-dimensional array as a dictionary
keyed by (k, l) tuples. That's easy an convenient, but conceptually a
poor fit and not terribly efficient. If efficiency is an issue (i.e.
much larger values of (k, l), you probably want to be looking at numpy.
Also, "in" is a keyword in python, so I changed that to "value".
There's probably cleaner ways to do this. I did a pretty literal
transliteration.
matrix = {}
value = 0
for k in range(1, 6):
for l in range(1, 6):
value += 1
matrix[(k, l)] = value
for i in range(1, 6):
print ",".join("%5d" % matrix[(i, j)] for j in range(1, 6))
This prints:
1, 2, 3, 4, 5
6, 7, 8, 9, 10
11, 12, 13, 14, 15
16, 17, 18, 19, 20
21, 22, 23, 24, 25
More information about the Python-list
mailing list