#100DaysOfCode in Python Transcripts
Chapter: Days 16-18: List comprehensions and generators
Lecture: Generators - the basics
0:00 Next up are generators,
0:02 sometimes building up a big list
0:04 hits your performance right?
0:06 It doesn't fit into memory and you can write
0:08 a generator that yields values one by one.
0:11 Its like a function that pauses itself.
0:15 You call it you get one value, it pauses,
0:17 you call it again, it gets you another value
0:20 and it keeps your memory footprint small.
0:22 Its best to write the simplest of generators next,
0:26 lets do a number generator, so def num_10
0:31 for e in range 5,
0:34 and then we use the yield keyword
0:36 and that's it, that's like the
0:38 smallest easiest generator is,
0:41 that's stored in a variable,
0:47 and that's it.
0:48 Now you can get the next value from the generator
0:51 using the next keyword and that's zero
0:56 and you can loop through them, like this
1:04 and notice that the for loop took of at one
1:07 because zero was already used or returned,
1:12 and another important thing to know about generators
1:16 is that they consume their sequence once
1:18 and once you get to the end and try to go beyond
1:22 that limit you get a StopIteration.
1:24 If I now do next gen, boom
1:26 it doesn't work, it says StopIteration
1:29 because we've exhausted the sequence right?
1:32 And again, for handles this for us,
1:35 so if I initiate this again,
1:41 and do again the for loop,
1:46 we don't get this exception
1:49 because for is smart enough to catch this for us.
1:51 So, that's the simplest generator example
1:54 I could come up with.