[Python-Dev] A `cogen' module - an observation
Oren Tirosh
oren-py-d@hishome.net
Wed, 28 Aug 2002 00:44:50 -0400
On Wed, Aug 28, 2002 at 12:40:30PM +1200, Greg Ewing wrote:
> Oren Tirosh <oren-py-d@hishome.net>:
>
> > > Hmmm, in other words, cartesian() is a lazy version
> > > of zip().
> >
> > Nope.
> >
> > >>> zip([1, 2], ['a', 'b'])
> > [(1, 'a'), (2, 'b')]
> >
> > >>> list(cartesian([1, 2], ['a', 'b']))
> > [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
>
> Sorry, BrainError. In that case, it's probably
> faster to use the nested loops -- unless
> cartesian() were implemented in C.
Yes, but a nested loop cannot be easily passed as an argument to a
function. Generator functions are pretty efficient, too - yield does
not incur the relatively high overhead of Python function calls.
Oren