code: def printcc (lst,extra=2):
      
      if type(lst[0]) not in [ListType,TupleType]:
          lst = [lst]
      rowstokill = []
      list2print = copy.deepcopy(lst)
      for i in range(len(lst)):
          if lst[i] == ['\n'] or lst[i]=='\n' or lst[i]=='dashes' or lst[i]=='' or lst[i]==['']:
              rowstokill = rowstokill + [i]
      rowstokill.reverse()   # delete blank rows from the end
      for row in rowstokill:
          del list2print[row]
      maxsize = [0]*len(list2print[0])
      for col in range(len(list2print[0])):
          items = colex(list2print,col)
          items = [makestr(_) for _ in items]
          maxsize[col] = max(map(len, items)) + extra
      for row in lst:
          if row == ['\n'] or row == '\n' or row == '' or row == ['']:
              print()
          elif row == ['dashes'] or row == 'dashes':
              dashes = [0]*len(maxsize)
              for j in range(len(maxsize)):
                  dashes[j] = '-'*(maxsize[j]-2)
              print(lineincustcols(dashes,maxsize))
          else:
              print(lineincustcols(row,maxsize))
      return None
docs: Prints a list of lists in columns, customized by the max size of items
  within the columns (max size of items in col, plus 'extra' number of spaces).
  Use 'dashes' or '\\n' in the list-of-lists to print dashes or blank lines,
  respectively.
  
  Usage:   printcc (lst,extra=2)
  Returns: None