6

I have a list of lists with a various number of elements (int). I want to print/write it, but in columns rather than in rows.

Example:

l = [[1,2,3],[4,5],[6,7,8,9],[0]]

Result:

1 4 6 0
2 5 7 .
3 . 8 .
. . 9 .
phihag
  • 263,143
  • 67
  • 432
  • 458
WlJs
  • 927
  • 1
  • 10
  • 12

2 Answers2

14

The easiest way to do this is to use itertools.izip_longest():

for x in itertools.izip_longest(*l, fillvalue="."):
    print " ".join(str(i) for i in x)
Sven Marnach
  • 530,615
  • 113
  • 910
  • 808
3

This:

import itertools

l = [[1,2,3],[4,5],[6,7,8,9],[0]]

for t in itertools.izip_longest(*l):
    print "".join("%3d" % x if x is not None else "  ." for x in t)

produces:

  1  4  6  0
  2  5  7  .
  3  .  8  .
  .  .  9  .
Ned Batchelder
  • 345,440
  • 70
  • 544
  • 649