<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def applymap(expr, func, rtype=None, resources=None, columns=None, excludes=None, args=(), **kwargs):
 """ Call func on each element of this collection. :param func: lambda, function, :class:`odps.models.Function`, or str which is the name of :class:`odps.models.Funtion` :param rtype: if not provided, will be the dtype of this sequence :param columns: columns to apply this function on :param excludes: columns to skip when applying the function :return: a new collection :Example: """

    if columns is not None and excludes is not None:
        raise ValueError('`columns` and `excludes` cannot be provided at the same time.')
    if not columns:
        excludes = excludes or []
        if isinstance(excludes, six.string_types):
            excludes = [excludes]
        excludes = set([c if isinstance(c, six.string_types) else c.name for c in excludes])
        columns = set([c for c in expr.schema.names if c not in excludes])
    else:
        if isinstance(columns, six.string_types):
            columns = [columns]
        columns = set([c if isinstance(c, six.string_types) else c.name for c in columns])
    mapping = [expr[c] if c not in columns
               else expr[c].map(func, rtype=rtype, resources=resources, args=args, **kwargs)
               for c in expr.schema.names]
    return expr.select(*mapping)