code: def align(self, arr):
          
          if arr is None:
              return arr
  
          c_hdrs = self._get_col_hdrs()
  
          if self.show_col_hdr_in_cell:
              for hdr in c_hdrs:
                  arr[hdr] = map(lambda col: ":".join([hdr, str(col)]), arr[hdr])
  
          if self.show_col_hdrs:
              widths = [max(len(str(col))
                        for col in arr[hdr].tolist() + [hdr]) for hdr in c_hdrs]
          else:
              widths = [max(len(str(col))
                        for col in arr[hdr].tolist()) for hdr in c_hdrs]
  
          # align column headers
          c_hdrs = map(lambda (c_hdr, width): c_hdr.ljust(width),
                       zip(c_hdrs, widths))
  
          # align data
          for n_row in range(len(arr)):
              arr[n_row] = tuple(map(lambda (col, width): col.ljust(width),
                                     zip(arr[n_row], widths)))
  
          return arr, c_hdrs, widths
docs: Align columns, including column headers