Zip together multiple columns.

    Args:
        columns (WeldObject / Numpy.ndarray): lust of columns

    Returns:
        A WeldObject representing this computation

def zip_columns(columns):
    """
    Zip together multiple columns.

    Args:
        columns (WeldObject / Numpy.ndarray): lust of columns

    Returns:
        A WeldObject representing this computation
    """
    weld_obj = WeldObject(encoder_, decoder_)
    column_vars = []
    for column in columns:
        col_var = weld_obj.update(column)
        if isinstance(column, WeldObject):
            col_var = column.obj_id
            weld_obj.dependencies[col_var] = column
        column_vars.append(col_var)

    arrays = ", ".join(column_vars)

    weld_template = """
       result(
         for(
           zip(%(array)s),
           appender,
           |b, i, e| merge(b, e)
         )
       )
    """
    weld_obj.weld_code = weld_template % {
        "array": arrays,
    }

    return weld_obj