[Python-Dev] iterzip()

Raymond Hettinger python@rcn.com
Sun, 28 Apr 2002 21:39:53 -0400

----- Original Message ----- 
From: "Barry A. Warsaw" <barry@zope.com>
To: "Raymond Hettinger" <python@rcn.com>
Cc: "Guido van Rossum" <guido@python.org>; <python-dev@python.org>

> >>>>> "RH" == Raymond Hettinger <python@rcn.com> writes:
>     RH> IMHO, This is a better way to loop over multiple sequences and
>     RH> has a chance at becoming the tool of choice.  I scanned all of
>     RH> my Python code and found that iterzip() was a better choice in
>     RH> every case except a matrix transpose coded as zip(*mat).
> I'd much rather see a patch that just changed zip() to be an iterator
> instead of adding an iterzip().  I doubt that much in-field code would
> break because of it (but write the PEP to find out. ;).

I started down this road, by checking code in the Vaults of Parnassus
on the assumption that zip() is rarely used outside a for-loop.  What
may be the killer is the examples of zip() in Python books which 
demonstrate a stand-alone zip() returning a list -- in some ways,
textbook examples are just as important as in-field code.

I will write-up a PEP to see if the world cares.  For all I know, I may
be the only who uses zip() throughout my code.  Zip is just new enough
that it might not be too late to change it to an iterator.

>     RH> Ditto.  Any chance of moving functions like map(), reduce(),
>     RH> and filter() to a functional module; pow() and divmod() to the
>     RH> math module; or input() to oblivion?
> >>>>> "GvR" == Guido van Rossum <guido@python.org> writes:
>     GvR> I wish.  Since they were there first, it's hard to get rid of
>     GvR> them.  (If you're truly masochist, write a PEP and post it to
>     GvR> c.l.py to find out how hard. :-)
> The PEP would have to specify a migration plan, i.e. the builtins are
> identical to the functional module versions, and would a deprecation
> schedule, etc.

Will do.  I think the resistance to moving the functionals will be fierce.
Divmod probably has very few instances in real code.  I think __pow__
would need to be left in (as the ** that calls it), but the function itself
may be used only rarely.

Does anyone know of an automated what that I can scan a large body
of published Python code.  I would want some real usage statistics
in a PEP but hate pulling modules down one at a time and grepping

Raymond Hettinger

> -Barry