code: def pprint2columns(llist, max_length=60):
      
      if len(llist) == 0:
          return None
  
      col_width = max(len(word) for word in llist) + 2  # padding
  
      # llist length must be even, otherwise splitting fails
      if not len(llist) % 2 == 0:
          llist += [' ']  # add a fake element
  
      if col_width > max_length:
          for el in llist:
              print(el)
      else:
          column1 = llist[:int(len(llist) / 2)]
          column2 = llist[int(len(llist) / 2):]
          for c1, c2 in zip(column1, column2):
              space = " " * (col_width - len(c1))
              print("%s%s%s" % (c1, space, c2))
docs: llist = a list of strings
      max_length = if a word is longer than that, for single col display
  
      > prints a list in two columns, taking care of alignment too