(*xss)
return zip(*xss)
Zip iterables of the same length.

  Unlike the builtin `zip`, this fails on iterables of different lengths.
  As a side-effect, it exhausts (and stores the elements of) all iterables
  before starting iteration.

  Args:
    *xss: the iterables to zip.

  Returns:
    zip(*xss)

  Raises:
    ValueError: if the iterables are of different lengths.
Zip iterables of the same length.
Zip iterables of the same length .
def eqzip(*xss):
  """Zip iterables of the same length.

  Unlike the builtin `zip`, this fails on iterables of different lengths.
  As a side-effect, it exhausts (and stores the elements of) all iterables
  before starting iteration.

  Args:
    *xss: the iterables to zip.

  Returns:
    zip(*xss)

  Raises:
    ValueError: if the iterables are of different lengths.
  """
  xss = list(map(list, xss))
  lengths = list(map(len, xss))
  if not all(length == lengths[0] for length in lengths):
    raise ValueError("eqzip got iterables of unequal lengths %s" % lengths)
  return zip(*xss)
def eqzip ( * xss ) : xss = list ( map ( list , xss ) ) lengths = list ( map ( len , xss ) ) if not all ( length == lengths [ 0 ] for length in lengths ) : raise ValueError ( "eqzip got iterables of unequal lengths %s" % lengths ) return zip ( * xss )