Unzips specified iterable of pairs to pair of two iterables.

  This function is an inversion of the standard `zip` function and the following
  hold:

    * ∀ l, r. l, r == unzip(zip(l, r))
    * ∀ p. p == zip(unzip(p))

  Examples:
    >>> Unzip([("foo", 1), ("bar", 2), ("baz", 3)])
    (["foo", "bar", "baz"], [1, 2, 3])

  Args:
    iterable: An iterable of pairs to unzip.

  Returns:
    A pair of iterables after unzipping.

def Unzip(iterable):
  """Unzips specified iterable of pairs to pair of two iterables.

  This function is an inversion of the standard `zip` function and the following
  hold:

    * ∀ l, r. l, r == unzip(zip(l, r))
    * ∀ p. p == zip(unzip(p))

  Examples:
    >>> Unzip([("foo", 1), ("bar", 2), ("baz", 3)])
    (["foo", "bar", "baz"], [1, 2, 3])

  Args:
    iterable: An iterable of pairs to unzip.

  Returns:
    A pair of iterables after unzipping.
  """
  lefts = []
  rights = []

  for left, right in iterable:
    lefts.append(left)
    rights.append(right)

  return lefts, rights