The Yield statement

Mark Tolonen M8R-yfto6h at mailinator.com
Sun Jul 6 03:29:26 EDT 2008


"inhahe" <inhahe at gmail.com> wrote in message 
news:z6_bk.24960$AJ6.1423 at bignews8.bellsouth.net...
>
> "Alex Bryan" <alexnbryan at gmail.com> wrote in message 
> news:mailman.1009.1214865088.1044.python-list at python.org...
>> Okay, so i don't really understand the Yield thing and i know it is 
>> useful. I've read a few things about it but it is all programming  jargon 
>> and so basically it is hard for me to understand. So can anyone  give me 
>> a description or link me to a site that has a good definition  and/or 
>> examples of it? If you could I would really appreciate it.
>
> Really short answer:
>
> def f():
>  yield 1
>  yield 2
>  yield 3
>
> for x in f(): print x,
> # should print 1 2 3
>
> def f():
>  for x in xrange(10):
>    yield x
>
> for x in f(): print x,
> # should print 0 1 2 3 4 5 6 7 8 9
>
> note that this won't work;
> def f():
>  for x in xrange(10):
>    for y in xrange(10):
>      yield (x,y)
>
> yield just doesn't work right with multiple levels of loops. i had to 
> discover that the hard way.

Huh?  Works fine:

>>> def f():
...  for x in xrange(10):
...    for y in xrange(10):
...      yield (x,y)
...
>>> for x in f(): print x,
...
(0, 0) (0, 1) (0, 2) (0, 3) (0, 4) (0, 5) (0, 6) (0, 7) (0, 8) (0, 9) (1, 0) 
(1,
 1) (1, 2) (1, 3) (1, 4) (1, 5) (1, 6) (1, 7) (1, 8) (1, 9) (2, 0) (2, 1) 
(2, 2)
 (2, 3) (2, 4) (2, 5) (2, 6) (2, 7) (2, 8) (2, 9) (3, 0) (3, 1) (3, 2) (3, 
3) (3
, 4) (3, 5) (3, 6) (3, 7) (3, 8) (3, 9) (4, 0) (4, 1) (4, 2) (4, 3) (4, 4) 
(4, 5
) (4, 6) (4, 7) (4, 8) (4, 9) (5, 0) (5, 1) (5, 2) (5, 3) (5, 4) (5, 5) (5, 
6) (
5, 7) (5, 8) (5, 9) (6, 0) (6, 1) (6, 2) (6, 3) (6, 4) (6, 5) (6, 6) (6, 7) 
(6,
8) (6, 9) (7, 0) (7, 1) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7) (7, 8) (7, 
9)
(8, 0) (8, 1) (8, 2) (8, 3) (8, 4) (8, 5) (8, 6) (8, 7) (8, 8) (8, 9) (9, 0) 
(9,
 1) (9, 2) (9, 3) (9, 4) (9, 5) (9, 6) (9, 7) (9, 8) (9, 9)

-Mark




More information about the Python-list mailing list