'Iterator which yields formatted string representation of column values.
Parameters
max_lines : int
Maximum lines of output (header + data rows)
show_name : bool
Include column name. Default is True.
show_unit : bool
Include a header row for unit.  Default is to show a row
for units only if one or more columns has a defined value
for the unit.
outs : dict
Must be a dict which is used to pass back additional values
defined within the iterator.
show_dtype : bool
Include column dtype. Default is False.
show_length : bool
Include column length at end.  Default is to show this only
if the column is not shown completely.'

def _pformat_col_iter(self, col, max_lines, show_name, show_unit, outs, show_dtype=False, show_length=None):

    (max_lines, _) = self._get_pprint_size(max_lines, (-1))
    multidims = getattr(col, u'shape', [0])[1:]
    if multidims:
        multidim0 = tuple((0 for n in multidims))
        multidim1 = tuple(((n - 1) for n in multidims))
        trivial_multidims = (np.prod(multidims) == 1)
    i_dashes = None
    i_centers = []
    n_header = 0
    if show_name:
        i_centers.append(n_header)
        col_name = six.text_type(col.info.name)
        if multidims:
            col_name += u'    [{0}]'.format(u','.join((six.text_type(n) for n in multidims)))
        n_header += 1
        (yield col_name)
    if show_unit:
        i_centers.append(n_header)
        n_header += 1
        (yield six.text_type((col.info.unit or u'')))
    if show_dtype:
        i_centers.append(n_header)
        n_header += 1
        try:
            dtype = dtype_info_name(col.dtype)
        except AttributeError:
            dtype = u'object'
        (yield six.text_type(dtype))
    if (show_unit or show_name or show_dtype):
        i_dashes = n_header
        n_header += 1
        (yield u'---')
    max_lines -= n_header
    n_print2 = (max_lines // 2)
    n_rows = len(col)
    col_format = (col.info.format or getattr(col.info, u'default_format', None))
    pssf = (getattr(col.info, u'possible_string_format_functions', None) or _possible_string_format_functions)
    auto_format_func = get_auto_format_func(id(col), pssf)
    format_key = (col_format, id(col))
    format_func = _format_funcs.get(format_key, auto_format_func)
    if (len(col) > max_lines):
        if (show_length is None):
            show_length = True
        i0 = (n_print2 - (1 if show_length else 0))
        i1 = ((n_rows - n_print2) - (max_lines % 2))
        ii = np.concatenate([np.arange(0, (i0 + 1)), np.arange((i1 + 1), len(col))])
    else:
        i0 = (-1)
        ii = np.arange(len(col))
    for i in ii:
        if (i == i0):
            (yield u'...')
        else:
            if multidims:
                if trivial_multidims:
                    col_str = format_func(col_format, col[((i,) + multidim0)])
                else:
                    col_str = ((format_func(col_format, col[((i,) + multidim0)]) + u'    ..    ') + format_func(col_format, col[((i,) + multidim1)]))
            else:
                col_str = format_func(col_format, col[i])
            (yield col_str)
    outs[u'show_length'] = show_length
    outs[u'n_header'] = n_header
    outs[u'i_centers'] = i_centers
    outs[u'i_dashes'] = i_dashes
