def unzip(iterable):
    """Unzips/transposes 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 = list(unzip(two_columned_list)) or ([], [])

    :returns: an iterable of the unzipped input.
    """
    return map(list, zip(*iterable))
