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
  • 278,196
  • 72
  • 453
  • 469
WlJs
  • 977
  • 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
  • 574,206
  • 118
  • 941
  • 841
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
  • 364,293
  • 75
  • 561
  • 662