import six


def unzip(iterable):
    """Unzip/transpose an iterable of tuples into a tuple of lists.

    WARNING: When given an empty iterable, this returns an empty list instead of a tuple. If you
    need a consistent interface then do something like this:

        left, right = unzip(two_columned_list) or ([], [])
    """
    return list(map(list, list(six.moves.zip(*iterable))))