hzhu at mars.localdomain
Tue Mar 5 09:55:52 CET 2002
On Mon, 4 Mar 2002 22:06:24 -0600, Jason Orendorff <jason at jorendorff.com> wrote:
>Huaiyu Zhu wrote:
>> I forgot to mention: without generating temporary lists.
>> >for (x,y) in [(i,j) for i in range(2) for j in range(3) ]:
>> > print x,y
>> >0 0 0
>> >0 0 1
>> Is list comprehension lazy, ie. without generating the actual list?
>No, list comprehensions are eager.
>You want generators:
>from __future__ import generators
>def pairs(n, m):
> for i in xrange(n):
> for j in xrange(m):
> yield (i, j)
>for (x, y) in pairs(2, 3):
> print x, y
>## Jason Orendorff http://www.jorendorff.com/
Well, that was what I started with. :-)
I gave a more general solution, which could be an extension of xrange to
multiple indices. I was wondering if there is a builtin facility for this.
Looks like there isn't.
More information about the Python-list