simplify printing of a list
Larry Bates
lbates at swamisoft.com
Thu Jun 3 19:12:20 EDT 2004
How about:
print ''.join(["%6d" % j for j in [0,1,2]])
or
print reduce(lambda x,y: x+"%6d" % y, [0,1,2], '')
or
t=[sys.stdout.write("%6d" % j for j in [0,1,2]]
(note: the t assignment is so the list comprehension
results don't print)
all work and are pythonic in nature. I didn't
test, but I'll be the last one is the most
efficient.
HTH,
Larry Bates
Syscon, Inc.
<beliavsky at aol.com> wrote in message
news:3064b51d.0406031408.1b676379 at posting.google.com...
> To print a list with a specified format one can write (for example)
>
> for j in [0,1,2]:
> print "%6d"%j,
> print
>
> The code
>
> print "%6d"%[0,1,2]
>
> currently produces a syntax error, but it would be convenient if it
> had the same meaning as the loop above.
>
> One can write a function to print a list, for example
>
> def print_list(x,fmt_x="%6d"):
> """ print a list on one line """
> for y in x: print fmt_x % y,
>
> print_list([0,1,2])
>
> but it gets messy to print several lists on the same line.
>
> In Fortran 90/95 one can write
>
> print "(100i6)",(/0,1,2/)
>
> where the format (100i6) means that UP TO 100 integers are printed
> using 6 columns. An alternative suggestion I have for Python is to
> allow
>
> print "100%6d"%[0,1,2]
>
> with the same meaning.
>
> I realize that what I am asking for is just a convenience, but it is
> one that I could use in almost every program I write.
More information about the Python-list
mailing list