inverse of the zip function

Raymond Hettinger vze4rx4y at verizon.net
Tue Jul 29 18:59:14 EDT 2003


> >> In other words, the the inverse of the built-in zip function?
> >
> > When used with the * operator, zip() is its own inverse:
> >
>
> This (obviously) doesn't work when z has length 0 or 2.
> I don't quite understand why zip is overloaded ...
>
> Oh, hang on, it does work for length 2! that's neat-o,
> and perhaps that's why zip was extended. Is it a functional programming
> convention, i wonder.
>
> Simon.


There is no special extension to zip().
It just happens to be one of those functions
like int.__neg__() that is closely related to
its own inverse.

* or apply() serve only to break a list into
individual arguments.  So, transpose() can
be defined like this:

def transpose(mat):
    return zip(*mat)

The transpose() is its own inverse for rectangular
matrices represented as lists of tuples.


Raymond Hettinger









More information about the Python-list mailing list