human
Complete this python program:
def apply_features(feature_func, toks, labeled=None):
assistant
#Here is the Python program you requested.

    """Use the ``LazyMap`` class to construct a lazy list-like
    object that is analogous to ``map(feature_func, toks)``.  In
    particular, if ``labeled=False``, then the returned list-like
    object\s values are equal to::
    [feature_func(tok) for tok in toks]
    If ``labeled=True``, then the returned list-like object\s values
    are equal to::
    [(feature_func(tok), label) for (tok, label) in toks]
    The primary purpose of this function is to avoid the memory
    overhead involved in storing all the featuresets for every token
    in a corpus.  Instead, these featuresets are constructed lazily,
    as-needed.  The reduction in memory overhead can be especially
    significant when the underlying list of tokens is itself lazy (as
    is the case with many corpus readers).
    :param feature_func: The function that will be applied to each
    token.  It should return a featureset -- i.e., a dict
    mapping feature names to feature values.
    :param toks: The list of tokens to which ``feature_func`` should be
    applied.  If ``labeled=True``, then the list elements will be
    passed directly to ``feature_func()``.  If ``labeled=False``,
    then the list elements should be tuples ``(tok,label)``, and
    ``tok`` will be passed to ``feature_func()``.
    :param labeled: If true, then ``toks`` contains labeled tokens --
    i.e., tuples of the form ``(tok, label)``.  (Default:
    auto-detect based on types.)
    """
    if (labeled is None):
        labeled = (toks and isinstance(toks[0], (tuple, list)))
    if labeled:
        def lazy_func(labeled_token):
            return (feature_func(labeled_token[0]), labeled_token[1])
        return LazyMap(lazy_func, toks)
    else:
        return LazyMap(feature_func, toks)