revive a generator
Yingjie Lan
lanyjie at yahoo.com
Thu Oct 20 21:46:30 EDT 2011
----- Original Message -----
> From: Paul Rudin <paul.nospam at rudin.co.uk>
> To: python-list at python.org
> Cc:
> Sent: Thursday, October 20, 2011 10:28 PM
> Subject: Re: revive a generator
>
> Yingjie Lan <lanyjie at yahoo.com> writes:
>
>> Hi,
>>
>> it seems a generator expression can be used only once:
>>
>>>>> g = (x*x for x in range(3))
>>>>> for x in g: print x
>> 0
>> 1
>> 4
>>>>> for x in g: print x #nothing printed
>>>>>
>>
>> Is there any way to revive g here?
>>
>
> Generators are like that - you consume them until they run out of
> values. You could have done [x*x for x in range(3)] and then iterated
> over that list as many times as you wanted.
>
> A generator doesn't have to remember all the values it generates so it
> can be more memory efficient that a list. Also it can, for example,
> generate an infinite sequence.
>
>
Thanks a lot to all who answered my question.
I am still not sure why should we enforce that
a generator can not be reused after an explicit
request to revive it?
More information about the Python-list
mailing list