]> git.friedersdorff.com Git - max/comprehensions_and_generators.git/blob - comprehensions_and_generators.pdf
Some notes and excercises on generators and comprehensions
[max/comprehensions_and_generators.git] / comprehensions_and_generators.pdf
1 %PDF-1.4
2 %\93\8c\8b\9e ReportLab Generated PDF document http://www.reportlab.com
3 1 0 obj
4 <<
5 /F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R /F5 7 0 R
6 >>
7 endobj
8 2 0 obj
9 <<
10 /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
11 >>
12 endobj
13 3 0 obj
14 <<
15 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
16 >>
17 endobj
18 4 0 obj
19 <<
20 /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
21 >>
22 endobj
23 5 0 obj
24 <<
25 /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
26 >>
27 endobj
28 6 0 obj
29 <<
30 /Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
31 /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
32 >> /Rotate 0 /Trans <<
33
34 >> 
35   /Type /Page
36 >>
37 endobj
38 7 0 obj
39 <<
40 /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
41 >>
42 endobj
43 8 0 obj
44 <<
45 /Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
46 /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
47 >> /Rotate 0 /Trans <<
48
49 >> 
50   /Type /Page
51 >>
52 endobj
53 9 0 obj
54 <<
55 /Outlines 11 0 R /PageLabels 18 0 R /PageMode /UseNone /Pages 15 0 R /Type /Catalog
56 >>
57 endobj
58 10 0 obj
59 <<
60 /Author () /CreationDate (D:20190524140358+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20190524140358+00'00') /Producer (ReportLab PDF Library - www.reportlab.com) 
61   /Subject (\(unspecified\)) /Title () /Trapped /False
62 >>
63 endobj
64 11 0 obj
65 <<
66 /Count 3 /First 12 0 R /Last 14 0 R /Type /Outlines
67 >>
68 endobj
69 12 0 obj
70 <<
71 /Dest [ 6 0 R /XYZ 62.69291 765.0236 0 ] /Next 13 0 R /Parent 11 0 R /Title (List Comprehensions)
72 >>
73 endobj
74 13 0 obj
75 <<
76 /Dest [ 6 0 R /XYZ 62.69291 369.2236 0 ] /Next 14 0 R /Parent 11 0 R /Prev 12 0 R /Title (Dictionary Comprehensions)
77 >>
78 endobj
79 14 0 obj
80 <<
81 /Dest [ 6 0 R /XYZ 62.69291 193.0236 0 ] /Parent 11 0 R /Prev 13 0 R /Title (Generators)
82 >>
83 endobj
84 15 0 obj
85 <<
86 /Count 2 /Kids [ 6 0 R 8 0 R ] /Type /Pages
87 >>
88 endobj
89 16 0 obj
90 <<
91 /Length 19408
92 >>
93 stream
94 1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
95 q
96 1 0 0 1 62.69291 744.0236 cm
97 q
98 BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (List Comprehensions) Tj T* ET
99 Q
100 Q
101 q
102 1 0 0 1 62.69291 714.0236 cm
103 q
104 0 0 0 rg
105 BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .641235 Tw (List comprehensions are declarative ways of defining lists in python. The following ways of building a list) Tj T* 0 Tw (are equivalent:) Tj T* ET
106 Q
107 Q
108 q
109 1 0 0 1 62.69291 632.8236 cm
110 q
111 q
112 1 0 0 1 0 0 cm
113 q
114 1 0 0 1 6.6 6.6 cm
115 q
116 .662745 .662745 .662745 RG
117 .5 w
118 .960784 .960784 .862745 rg
119 n -6 -6 468.6898 72 re B*
120 Q
121 q
122 .960784 .960784 .862745 rg
123 n 0 48 6 12 re f*
124 .960784 .960784 .862745 rg
125 n 12 48 6 12 re f*
126 .960784 .960784 .862745 rg
127 n 24 48 6 12 re f*
128 .960784 .960784 .862745 rg
129 n 30 48 6 12 re f*
130 .960784 .960784 .862745 rg
131 n 36 48 12 12 re f*
132 .960784 .960784 .862745 rg
133 n 48 48 6 12 re f*
134 .960784 .960784 .862745 rg
135 n 60 48 18 12 re f*
136 .960784 .960784 .862745 rg
137 n 84 48 6 12 re f*
138 .960784 .960784 .862745 rg
139 n 96 48 12 12 re f*
140 .960784 .960784 .862745 rg
141 n 114 48 30 12 re f*
142 .960784 .960784 .862745 rg
143 n 144 48 6 12 re f*
144 .960784 .960784 .862745 rg
145 n 150 48 6 12 re f*
146 .960784 .960784 .862745 rg
147 n 156 48 6 12 re f*
148 .960784 .960784 .862745 rg
149 n 168 48 12 12 re f*
150 .960784 .960784 .862745 rg
151 n 180 48 12 12 re f*
152 .960784 .960784 .862745 rg
153 n 0 24 6 12 re f*
154 .960784 .960784 .862745 rg
155 n 12 24 6 12 re f*
156 .960784 .960784 .862745 rg
157 n 24 24 12 12 re f*
158 .960784 .960784 .862745 rg
159 n 0 12 18 12 re f*
160 .960784 .960784 .862745 rg
161 n 24 12 6 12 re f*
162 .960784 .960784 .862745 rg
163 n 36 12 12 12 re f*
164 .960784 .960784 .862745 rg
165 n 54 12 30 12 re f*
166 .960784 .960784 .862745 rg
167 n 84 12 6 12 re f*
168 .960784 .960784 .862745 rg
169 n 90 12 6 12 re f*
170 .960784 .960784 .862745 rg
171 n 96 12 6 12 re f*
172 .960784 .960784 .862745 rg
173 n 108 12 12 12 re f*
174 .960784 .960784 .862745 rg
175 n 120 12 12 12 re f*
176 .960784 .960784 .862745 rg
177 n 24 0 6 12 re f*
178 .960784 .960784 .862745 rg
179 n 30 0 6 12 re f*
180 .960784 .960784 .862745 rg
181 n 36 0 36 12 re f*
182 .960784 .960784 .862745 rg
183 n 72 0 6 12 re f*
184 .960784 .960784 .862745 rg
185 n 78 0 6 12 re f*
186 .960784 .960784 .862745 rg
187 n 84 0 12 12 re f*
188 .960784 .960784 .862745 rg
189 n 96 0 6 12 re f*
190 .960784 .960784 .862745 rg
191 n 102 0 6 12 re f*
192 BT 1 0 0 1 0 50 Tm 12 TL /F3 10 Tf 0 0 0 rg (l) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ([) Tj 0 0 0 rg (x) Tj .4 .4 .4 rg (**) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\)]) Tj 0 0 0 rg  T*  T* 0 0 0 rg (l) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ([]) Tj 0 0 0 rg  T* /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\):) Tj 0 0 0 rg  T* (    ) Tj 0 0 0 rg (l) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (append) Tj 0 0 0 rg (\() Tj 0 0 0 rg (x) Tj .4 .4 .4 rg (**) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (\)) Tj T* ET
193 Q
194 Q
195 Q
196 Q
197 Q
198 q
199 1 0 0 1 62.69291 539.6236 cm
200 q
201 q
202 1 0 0 1 0 0 cm
203 q
204 1 0 0 1 6.6 6.6 cm
205 q
206 .662745 .662745 .662745 RG
207 .5 w
208 .960784 .960784 .862745 rg
209 n -6 -6 468.6898 84 re B*
210 Q
211 q
212 .960784 .960784 .862745 rg
213 n 0 60 6 12 re f*
214 .960784 .960784 .862745 rg
215 n 12 60 6 12 re f*
216 .960784 .960784 .862745 rg
217 n 24 60 6 12 re f*
218 .960784 .960784 .862745 rg
219 n 30 60 6 12 re f*
220 .960784 .960784 .862745 rg
221 n 42 60 18 12 re f*
222 .960784 .960784 .862745 rg
223 n 66 60 6 12 re f*
224 .960784 .960784 .862745 rg
225 n 78 60 12 12 re f*
226 .960784 .960784 .862745 rg
227 n 96 60 30 12 re f*
228 .960784 .960784 .862745 rg
229 n 126 60 6 12 re f*
230 .960784 .960784 .862745 rg
231 n 132 60 6 12 re f*
232 .960784 .960784 .862745 rg
233 n 138 60 6 12 re f*
234 .960784 .960784 .862745 rg
235 n 150 60 12 12 re f*
236 .960784 .960784 .862745 rg
237 n 162 60 6 12 re f*
238 .960784 .960784 .862745 rg
239 n 174 60 12 12 re f*
240 .960784 .960784 .862745 rg
241 n 192 60 6 12 re f*
242 .960784 .960784 .862745 rg
243 n 204 60 6 12 re f*
244 .960784 .960784 .862745 rg
245 n 216 60 6 12 re f*
246 .960784 .960784 .862745 rg
247 n 228 60 12 12 re f*
248 .960784 .960784 .862745 rg
249 n 246 60 6 12 re f*
250 .960784 .960784 .862745 rg
251 n 252 60 6 12 re f*
252 .960784 .960784 .862745 rg
253 n 0 36 6 12 re f*
254 .960784 .960784 .862745 rg
255 n 12 36 6 12 re f*
256 .960784 .960784 .862745 rg
257 n 24 36 12 12 re f*
258 .960784 .960784 .862745 rg
259 n 0 24 18 12 re f*
260 .960784 .960784 .862745 rg
261 n 24 24 6 12 re f*
262 .960784 .960784 .862745 rg
263 n 36 24 12 12 re f*
264 .960784 .960784 .862745 rg
265 n 54 24 30 12 re f*
266 .960784 .960784 .862745 rg
267 n 84 24 6 12 re f*
268 .960784 .960784 .862745 rg
269 n 90 24 6 12 re f*
270 .960784 .960784 .862745 rg
271 n 96 24 6 12 re f*
272 .960784 .960784 .862745 rg
273 n 108 24 12 12 re f*
274 .960784 .960784 .862745 rg
275 n 120 24 12 12 re f*
276 .960784 .960784 .862745 rg
277 n 24 12 12 12 re f*
278 .960784 .960784 .862745 rg
279 n 42 12 6 12 re f*
280 .960784 .960784 .862745 rg
281 n 54 12 6 12 re f*
282 .960784 .960784 .862745 rg
283 n 66 12 6 12 re f*
284 .960784 .960784 .862745 rg
285 n 78 12 12 12 re f*
286 .960784 .960784 .862745 rg
287 n 96 12 6 12 re f*
288 .960784 .960784 .862745 rg
289 n 102 12 6 12 re f*
290 .960784 .960784 .862745 rg
291 n 48 0 6 12 re f*
292 .960784 .960784 .862745 rg
293 n 54 0 6 12 re f*
294 .960784 .960784 .862745 rg
295 n 60 0 36 12 re f*
296 .960784 .960784 .862745 rg
297 n 96 0 6 12 re f*
298 .960784 .960784 .862745 rg
299 n 102 0 6 12 re f*
300 .960784 .960784 .862745 rg
301 n 108 0 6 12 re f*
302 BT 1 0 0 1 0 62 Tm 12 TL /F3 10 Tf 0 0 0 rg (m) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ([) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\)) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (if) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (%) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (==) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (]) Tj 0 0 0 rg  T*  T* 0 0 0 rg (m) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ([]) Tj 0 0 0 rg  T* /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\):) Tj 0 0 0 rg  T* (    ) Tj /F4 10 Tf 0 .501961 0 rg (if) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (%) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (==) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (:) Tj 0 0 0 rg  T* (        ) Tj 0 0 0 rg (m) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (append) Tj 0 0 0 rg (\() Tj 0 0 0 rg (x) Tj 0 0 0 rg (\)) Tj T* ET
303 Q
304 Q
305 Q
306 Q
307 Q
308 q
309 1 0 0 1 62.69291 434.4236 cm
310 q
311 q
312 1 0 0 1 0 0 cm
313 q
314 1 0 0 1 6.6 6.6 cm
315 q
316 .662745 .662745 .662745 RG
317 .5 w
318 .960784 .960784 .862745 rg
319 n -6 -6 468.6898 96 re B*
320 Q
321 q
322 .960784 .960784 .862745 rg
323 n 0 72 6 12 re f*
324 .960784 .960784 .862745 rg
325 n 12 72 6 12 re f*
326 .960784 .960784 .862745 rg
327 n 24 72 12 12 re f*
328 .960784 .960784 .862745 rg
329 n 36 72 6 12 re f*
330 .960784 .960784 .862745 rg
331 n 42 72 6 12 re f*
332 .960784 .960784 .862745 rg
333 n 54 72 6 12 re f*
334 .960784 .960784 .862745 rg
335 n 60 72 6 12 re f*
336 .960784 .960784 .862745 rg
337 n 72 72 18 12 re f*
338 .960784 .960784 .862745 rg
339 n 96 72 6 12 re f*
340 .960784 .960784 .862745 rg
341 n 108 72 12 12 re f*
342 .960784 .960784 .862745 rg
343 n 126 72 30 12 re f*
344 .960784 .960784 .862745 rg
345 n 156 72 6 12 re f*
346 .960784 .960784 .862745 rg
347 n 162 72 6 12 re f*
348 .960784 .960784 .862745 rg
349 n 168 72 6 12 re f*
350 .960784 .960784 .862745 rg
351 n 180 72 12 12 re f*
352 .960784 .960784 .862745 rg
353 n 192 72 6 12 re f*
354 .960784 .960784 .862745 rg
355 n 204 72 18 12 re f*
356 .960784 .960784 .862745 rg
357 n 228 72 6 12 re f*
358 .960784 .960784 .862745 rg
359 n 240 72 12 12 re f*
360 .960784 .960784 .862745 rg
361 n 258 72 30 12 re f*
362 .960784 .960784 .862745 rg
363 n 288 72 6 12 re f*
364 .960784 .960784 .862745 rg
365 n 294 72 6 12 re f*
366 .960784 .960784 .862745 rg
367 n 300 72 6 12 re f*
368 .960784 .960784 .862745 rg
369 n 312 72 12 12 re f*
370 .960784 .960784 .862745 rg
371 n 324 72 6 12 re f*
372 .960784 .960784 .862745 rg
373 n 336 72 12 12 re f*
374 .960784 .960784 .862745 rg
375 n 354 72 6 12 re f*
376 .960784 .960784 .862745 rg
377 n 366 72 6 12 re f*
378 .960784 .960784 .862745 rg
379 n 378 72 6 12 re f*
380 .960784 .960784 .862745 rg
381 n 384 72 6 12 re f*
382 .960784 .960784 .862745 rg
383 n 0 48 6 12 re f*
384 .960784 .960784 .862745 rg
385 n 12 48 6 12 re f*
386 .960784 .960784 .862745 rg
387 n 24 48 12 12 re f*
388 .960784 .960784 .862745 rg
389 n 0 36 18 12 re f*
390 .960784 .960784 .862745 rg
391 n 24 36 6 12 re f*
392 .960784 .960784 .862745 rg
393 n 36 36 12 12 re f*
394 .960784 .960784 .862745 rg
395 n 54 36 30 12 re f*
396 .960784 .960784 .862745 rg
397 n 84 36 6 12 re f*
398 .960784 .960784 .862745 rg
399 n 90 36 6 12 re f*
400 .960784 .960784 .862745 rg
401 n 96 36 6 12 re f*
402 .960784 .960784 .862745 rg
403 n 108 36 12 12 re f*
404 .960784 .960784 .862745 rg
405 n 120 36 12 12 re f*
406 .960784 .960784 .862745 rg
407 n 24 24 18 12 re f*
408 .960784 .960784 .862745 rg
409 n 48 24 6 12 re f*
410 .960784 .960784 .862745 rg
411 n 60 24 12 12 re f*
412 .960784 .960784 .862745 rg
413 n 78 24 30 12 re f*
414 .960784 .960784 .862745 rg
415 n 108 24 6 12 re f*
416 .960784 .960784 .862745 rg
417 n 114 24 6 12 re f*
418 .960784 .960784 .862745 rg
419 n 120 24 6 12 re f*
420 .960784 .960784 .862745 rg
421 n 132 24 12 12 re f*
422 .960784 .960784 .862745 rg
423 n 144 24 12 12 re f*
424 .960784 .960784 .862745 rg
425 n 48 12 12 12 re f*
426 .960784 .960784 .862745 rg
427 n 66 12 6 12 re f*
428 .960784 .960784 .862745 rg
429 n 78 12 6 12 re f*
430 .960784 .960784 .862745 rg
431 n 90 12 6 12 re f*
432 .960784 .960784 .862745 rg
433 n 96 12 6 12 re f*
434 .960784 .960784 .862745 rg
435 n 72 0 6 12 re f*
436 .960784 .960784 .862745 rg
437 n 78 0 6 12 re f*
438 .960784 .960784 .862745 rg
439 n 84 0 36 12 re f*
440 .960784 .960784 .862745 rg
441 n 120 0 12 12 re f*
442 .960784 .960784 .862745 rg
443 n 132 0 6 12 re f*
444 .960784 .960784 .862745 rg
445 n 138 0 6 12 re f*
446 .960784 .960784 .862745 rg
447 n 150 0 6 12 re f*
448 .960784 .960784 .862745 rg
449 n 156 0 12 12 re f*
450 BT 1 0 0 1 0 74 Tm 12 TL /F3 10 Tf 0 0 0 rg (n) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ([\() Tj 0 0 0 rg (x) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (y) Tj 0 0 0 rg (\)) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\)) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (y) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\)) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (if) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (>) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (y) Tj 0 0 0 rg (]) Tj 0 0 0 rg  T*  T* 0 0 0 rg (n) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ([]) Tj 0 0 0 rg  T* /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\):) Tj 0 0 0 rg  T* (    ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (y) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10) Tj 0 0 0 rg (\):) Tj 0 0 0 rg  T* (        ) Tj /F4 10 Tf 0 .501961 0 rg (if) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (>) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (y) Tj 0 0 0 rg (:) Tj 0 0 0 rg  T* (            ) Tj 0 0 0 rg (n) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (append) Tj 0 0 0 rg (\(\() Tj 0 0 0 rg (x) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (y) Tj 0 0 0 rg (\)\)) Tj T* ET
451 Q
452 Q
453 Q
454 Q
455 Q
456 q
457 1 0 0 1 62.69291 414.4236 cm
458 q
459 0 0 0 rg
460 BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The general form is:) Tj T* ET
461 Q
462 Q
463 q
464 1 0 0 1 62.69291 381.2236 cm
465 q
466 q
467 1 0 0 1 0 0 cm
468 q
469 1 0 0 1 6.6 6.6 cm
470 q
471 .662745 .662745 .662745 RG
472 .5 w
473 .960784 .960784 .862745 rg
474 n -6 -6 468.6898 24 re B*
475 Q
476 q
477 .960784 .960784 .862745 rg
478 n 0 0 6 12 re f*
479 .960784 .960784 .862745 rg
480 n 6 0 60 12 re f*
481 .960784 .960784 .862745 rg
482 n 72 0 18 12 re f*
483 .960784 .960784 .862745 rg
484 n 96 0 6 12 re f*
485 .960784 .960784 .862745 rg
486 n 108 0 12 12 re f*
487 .960784 .960784 .862745 rg
488 n 126 0 6 12 re f*
489 .960784 .960784 .862745 rg
490 n 138 0 54 12 re f*
491 .960784 .960784 .862745 rg
492 n 192 0 6 12 re f*
493 BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg ([) Tj 0 0 0 rg (expression) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (y) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (condition) Tj 0 0 0 rg (]) Tj T* ET
494 Q
495 Q
496 Q
497 Q
498 Q
499 q
500 1 0 0 1 62.69291 348.2236 cm
501 q
502 BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Dictionary Comprehensions) Tj T* ET
503 Q
504 Q
505 q
506 1 0 0 1 62.69291 330.2236 cm
507 q
508 0 0 0 rg
509 BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Dictionary comprehensions are the analogous construct for dictionaries:) Tj T* ET
510 Q
511 Q
512 q
513 1 0 0 1 62.69291 237.0236 cm
514 q
515 q
516 1 0 0 1 0 0 cm
517 q
518 1 0 0 1 6.6 6.6 cm
519 q
520 .662745 .662745 .662745 RG
521 .5 w
522 .960784 .960784 .862745 rg
523 n -6 -6 468.6898 84 re B*
524 Q
525 q
526 .960784 .960784 .862745 rg
527 n 0 60 6 12 re f*
528 .960784 .960784 .862745 rg
529 n 12 60 6 12 re f*
530 .960784 .960784 .862745 rg
531 n 24 60 6 12 re f*
532 .960784 .960784 .862745 rg
533 n 30 60 6 12 re f*
534 .960784 .960784 .862745 rg
535 n 36 60 6 12 re f*
536 .960784 .960784 .862745 rg
537 n 48 60 6 12 re f*
538 .960784 .960784 .862745 rg
539 n 54 60 12 12 re f*
540 .960784 .960784 .862745 rg
541 n 66 60 6 12 re f*
542 .960784 .960784 .862745 rg
543 n 78 60 18 12 re f*
544 .960784 .960784 .862745 rg
545 n 102 60 6 12 re f*
546 .960784 .960784 .862745 rg
547 n 114 60 12 12 re f*
548 .960784 .960784 .862745 rg
549 n 132 60 30 12 re f*
550 .960784 .960784 .862745 rg
551 n 162 60 6 12 re f*
552 .960784 .960784 .862745 rg
553 n 168 60 6 12 re f*
554 .960784 .960784 .862745 rg
555 n 174 60 6 12 re f*
556 .960784 .960784 .862745 rg
557 n 186 60 18 12 re f*
558 .960784 .960784 .862745 rg
559 n 204 60 6 12 re f*
560 .960784 .960784 .862745 rg
561 n 216 60 12 12 re f*
562 .960784 .960784 .862745 rg
563 n 234 60 24 12 re f*
564 .960784 .960784 .862745 rg
565 n 258 60 6 12 re f*
566 .960784 .960784 .862745 rg
567 n 264 60 24 12 re f*
568 .960784 .960784 .862745 rg
569 n 288 60 6 12 re f*
570 .960784 .960784 .862745 rg
571 n 294 60 6 12 re f*
572 .960784 .960784 .862745 rg
573 n 300 60 6 12 re f*
574 .960784 .960784 .862745 rg
575 n 306 60 6 12 re f*
576 .960784 .960784 .862745 rg
577 n 312 60 60 12 re f*
578 .960784 .960784 .862745 rg
579 n 372 60 18 12 re f*
580 .960784 .960784 .862745 rg
581 n 0 36 6 12 re f*
582 .960784 .960784 .862745 rg
583 n 12 36 6 12 re f*
584 .960784 .960784 .862745 rg
585 n 24 36 12 12 re f*
586 .960784 .960784 .862745 rg
587 n 0 24 18 12 re f*
588 .960784 .960784 .862745 rg
589 n 24 24 6 12 re f*
590 .960784 .960784 .862745 rg
591 n 36 24 12 12 re f*
592 .960784 .960784 .862745 rg
593 n 54 24 30 12 re f*
594 .960784 .960784 .862745 rg
595 n 84 24 6 12 re f*
596 .960784 .960784 .862745 rg
597 n 90 24 6 12 re f*
598 .960784 .960784 .862745 rg
599 n 96 24 6 12 re f*
600 .960784 .960784 .862745 rg
601 n 108 24 18 12 re f*
602 .960784 .960784 .862745 rg
603 n 126 24 12 12 re f*
604 .960784 .960784 .862745 rg
605 n 24 12 12 12 re f*
606 .960784 .960784 .862745 rg
607 n 42 12 24 12 re f*
608 .960784 .960784 .862745 rg
609 n 66 12 6 12 re f*
610 .960784 .960784 .862745 rg
611 n 72 12 24 12 re f*
612 .960784 .960784 .862745 rg
613 n 96 12 6 12 re f*
614 .960784 .960784 .862745 rg
615 n 102 12 6 12 re f*
616 .960784 .960784 .862745 rg
617 n 108 12 6 12 re f*
618 .960784 .960784 .862745 rg
619 n 114 12 6 12 re f*
620 .960784 .960784 .862745 rg
621 n 120 12 60 12 re f*
622 .960784 .960784 .862745 rg
623 n 180 12 18 12 re f*
624 .960784 .960784 .862745 rg
625 n 48 0 6 12 re f*
626 .960784 .960784 .862745 rg
627 n 54 0 6 12 re f*
628 .960784 .960784 .862745 rg
629 n 60 0 6 12 re f*
630 .960784 .960784 .862745 rg
631 n 66 0 6 12 re f*
632 .960784 .960784 .862745 rg
633 n 78 0 6 12 re f*
634 .960784 .960784 .862745 rg
635 n 90 0 6 12 re f*
636 .960784 .960784 .862745 rg
637 n 96 0 12 12 re f*
638 .960784 .960784 .862745 rg
639 n 108 0 6 12 re f*
640 BT 1 0 0 1 0 62 Tm 12 TL /F3 10 Tf 0 0 0 rg (o) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ({) Tj 0 0 0 rg (x) Tj 0 0 0 rg (:) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj .4 .4 .4 rg (**) Tj .4 .4 .4 rg (3) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (100) Tj 0 0 0 rg (\)) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (if) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (math) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (sqrt) Tj 0 0 0 rg (\() Tj 0 0 0 rg (x) Tj 0 0 0 rg (\)) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (is_integer) Tj 0 0 0 rg (\(\)}) Tj 0 0 0 rg  T*  T* 0 0 0 rg (o) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ({}) Tj 0 0 0 rg  T* /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (1) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (100) Tj 0 0 0 rg (\):) Tj 0 0 0 rg  T* (    ) Tj /F4 10 Tf 0 .501961 0 rg (if) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (math) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (sqrt) Tj 0 0 0 rg (\() Tj 0 0 0 rg (x) Tj 0 0 0 rg (\)) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (is_integer) Tj 0 0 0 rg (\(\):) Tj 0 0 0 rg  T* (        ) Tj 0 0 0 rg (o) Tj 0 0 0 rg ([) Tj 0 0 0 rg (x) Tj 0 0 0 rg (]) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (x) Tj .4 .4 .4 rg (**) Tj .4 .4 .4 rg (3) Tj T* ET
641 Q
642 Q
643 Q
644 Q
645 Q
646 q
647 1 0 0 1 62.69291 205.0236 cm
648 q
649 0 0 0 rg
650 BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .227045 Tw (I have never used a dictionary comprehension outside of exercises. I don't know how useful they are, and) Tj T* 0 Tw (I'm struggling to think of good examples.) Tj T* ET
651 Q
652 Q
653 q
654 1 0 0 1 62.69291 172.0236 cm
655 q
656 BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Generators) Tj T* ET
657 Q
658 Q
659 q
660 1 0 0 1 62.69291 154.0236 cm
661 q
662 0 0 0 rg
663 BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A generator is a function that yields values rather than returning them. For example:) Tj T* ET
664 Q
665 Q
666 q
667 1 0 0 1 62.69291 96.82362 cm
668 q
669 q
670 1 0 0 1 0 0 cm
671 q
672 1 0 0 1 6.6 6.6 cm
673 q
674 .662745 .662745 .662745 RG
675 .5 w
676 .960784 .960784 .862745 rg
677 n -6 -6 468.6898 48 re B*
678 Q
679 q
680 .960784 .960784 .862745 rg
681 n 0 24 18 12 re f*
682 .960784 .960784 .862745 rg
683 n 24 24 42 12 re f*
684 .960784 .960784 .862745 rg
685 n 66 24 18 12 re f*
686 .960784 .960784 .862745 rg
687 n 24 12 6 12 re f*
688 .960784 .960784 .862745 rg
689 n 36 12 6 12 re f*
690 .960784 .960784 .862745 rg
691 n 48 12 6 12 re f*
692 .960784 .960784 .862745 rg
693 n 24 0 30 12 re f*
694 .960784 .960784 .862745 rg
695 n 60 0 24 12 re f*
696 BT 1 0 0 1 0 26 Tm 12 TL /F4 10 Tf 0 .501961 0 rg (def) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (squares) Tj 0 0 0 rg (\(\):) Tj 0 0 0 rg  T* (    ) Tj 0 0 0 rg (i) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (0) Tj 0 0 0 rg  T* (    ) Tj /F4 10 Tf 0 .501961 0 rg (while) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (True) Tj 0 0 0 rg  T* ET
697 Q
698 Q
699 Q
700 Q
701 Q
702  
703 endstream
704 endobj
705 17 0 obj
706 <<
707 /Length 5988
708 >>
709 stream
710 1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
711 q
712 1 0 0 1 62.69291 727.8236 cm
713 q
714 q
715 1 0 0 1 0 0 cm
716 q
717 1 0 0 1 6.6 6.6 cm
718 q
719 .662745 .662745 .662745 RG
720 .5 w
721 .960784 .960784 .862745 rg
722 n -6 -6 468.6898 36 re B*
723 Q
724 q
725 .960784 .960784 .862745 rg
726 n 48 12 30 12 re f*
727 .960784 .960784 .862745 rg
728 n 84 12 6 12 re f*
729 .960784 .960784 .862745 rg
730 n 90 12 12 12 re f*
731 .960784 .960784 .862745 rg
732 n 102 12 6 12 re f*
733 .960784 .960784 .862745 rg
734 n 48 0 6 12 re f*
735 .960784 .960784 .862745 rg
736 n 60 0 12 12 re f*
737 .960784 .960784 .862745 rg
738 n 78 0 6 12 re f*
739 BT 1 0 0 1 0 14 Tm 12 TL /F3 10 Tf 0 0 0 rg (        ) Tj /F4 10 Tf 0 .501961 0 rg (yield) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (i) Tj .4 .4 .4 rg (**) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg  T* (        ) Tj 0 0 0 rg (i) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (+=) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (1) Tj T* ET
740 Q
741 Q
742 Q
743 Q
744 Q
745 q
746 1 0 0 1 62.69291 707.8236 cm
747 q
748 BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The built in ) Tj /F5 10 Tf 0 0 0 rg (range) Tj /F1 10 Tf 0 0 0 rg ( function is similar to a generator. Generators are iterable:) Tj T* ET
749 Q
750 Q
751 q
752 1 0 0 1 62.69291 638.6236 cm
753 q
754 q
755 1 0 0 1 0 0 cm
756 q
757 1 0 0 1 6.6 6.6 cm
758 q
759 .662745 .662745 .662745 RG
760 .5 w
761 .960784 .960784 .862745 rg
762 n -6 -6 468.6898 60 re B*
763 Q
764 q
765 .960784 .960784 .862745 rg
766 n 0 36 18 12 re f*
767 .960784 .960784 .862745 rg
768 n 24 36 36 12 re f*
769 .960784 .960784 .862745 rg
770 n 66 36 12 12 re f*
771 .960784 .960784 .862745 rg
772 n 84 36 42 12 re f*
773 .960784 .960784 .862745 rg
774 n 126 36 18 12 re f*
775 .960784 .960784 .862745 rg
776 n 24 24 30 12 re f*
777 .960784 .960784 .862745 rg
778 n 54 24 6 12 re f*
779 .960784 .960784 .862745 rg
780 n 60 24 36 12 re f*
781 .960784 .960784 .862745 rg
782 n 96 24 6 12 re f*
783 .960784 .960784 .862745 rg
784 n 24 12 12 12 re f*
785 .960784 .960784 .862745 rg
786 n 42 12 36 12 re f*
787 .960784 .960784 .862745 rg
788 n 84 12 6 12 re f*
789 .960784 .960784 .862745 rg
790 n 96 12 30 12 re f*
791 .960784 .960784 .862745 rg
792 n 126 12 6 12 re f*
793 .960784 .960784 .862745 rg
794 n 48 0 30 12 re f*
795 BT 1 0 0 1 0 38 Tm 12 TL /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (square) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (squares) Tj 0 0 0 rg (\(\):) Tj 0 0 0 rg  T* (    ) Tj /F4 10 Tf 0 .501961 0 rg (print) Tj /F3 10 Tf 0 0 0 rg (\() Tj 0 0 0 rg (square) Tj 0 0 0 rg (\)) Tj 0 0 0 rg  T* (    ) Tj /F4 10 Tf 0 .501961 0 rg (if) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (square) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (>) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (10000) Tj 0 0 0 rg (:) Tj 0 0 0 rg  T* (        ) Tj /F4 10 Tf 0 .501961 0 rg (break) Tj T* ET
796 Q
797 Q
798 Q
799 Q
800 Q
801 q
802 1 0 0 1 62.69291 618.6236 cm
803 q
804 0 0 0 rg
805 BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (But only once!) Tj T* ET
806 Q
807 Q
808 q
809 1 0 0 1 62.69291 600.6236 cm
810 q
811 0 0 0 rg
812 BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Generators can take arguments:) Tj T* ET
813 Q
814 Q
815 q
816 1 0 0 1 62.69291 519.4236 cm
817 q
818 q
819 1 0 0 1 0 0 cm
820 q
821 1 0 0 1 6.6 6.6 cm
822 q
823 .662745 .662745 .662745 RG
824 .5 w
825 .960784 .960784 .862745 rg
826 n -6 -6 468.6898 72 re B*
827 Q
828 q
829 .960784 .960784 .862745 rg
830 n 0 48 18 12 re f*
831 .960784 .960784 .862745 rg
832 n 24 48 54 12 re f*
833 .960784 .960784 .862745 rg
834 n 78 48 6 12 re f*
835 .960784 .960784 .862745 rg
836 n 84 48 18 12 re f*
837 .960784 .960784 .862745 rg
838 n 102 48 12 12 re f*
839 .960784 .960784 .862745 rg
840 n 24 36 6 12 re f*
841 .960784 .960784 .862745 rg
842 n 36 36 6 12 re f*
843 .960784 .960784 .862745 rg
844 n 48 36 6 12 re f*
845 .960784 .960784 .862745 rg
846 n 24 24 30 12 re f*
847 .960784 .960784 .862745 rg
848 n 60 24 24 12 re f*
849 .960784 .960784 .862745 rg
850 n 48 12 30 12 re f*
851 .960784 .960784 .862745 rg
852 n 84 12 6 12 re f*
853 .960784 .960784 .862745 rg
854 n 90 12 12 12 re f*
855 .960784 .960784 .862745 rg
856 n 102 12 18 12 re f*
857 .960784 .960784 .862745 rg
858 n 48 0 6 12 re f*
859 .960784 .960784 .862745 rg
860 n 60 0 12 12 re f*
861 .960784 .960784 .862745 rg
862 n 78 0 6 12 re f*
863 BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 .501961 0 rg (def) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (exponents) Tj 0 0 0 rg (\() Tj 0 0 0 rg (exp) Tj 0 0 0 rg (\):) Tj 0 0 0 rg  T* (    ) Tj 0 0 0 rg (i) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (0) Tj 0 0 0 rg  T* (    ) Tj /F4 10 Tf 0 .501961 0 rg (while) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (True) Tj 0 0 0 rg  T* (        ) Tj /F4 10 Tf 0 .501961 0 rg (yield) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (i) Tj .4 .4 .4 rg (**) Tj 0 0 0 rg (exp) Tj 0 0 0 rg  T* (        ) Tj 0 0 0 rg (i) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (+=) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (1) Tj T* ET
864 Q
865 Q
866 Q
867 Q
868 Q
869 q
870 1 0 0 1 62.69291 499.4236 cm
871 q
872 0 0 0 rg
873 BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Generator expressions are similar to list comprehensions:) Tj T* ET
874 Q
875 Q
876 q
877 1 0 0 1 62.69291 466.2236 cm
878 q
879 q
880 1 0 0 1 0 0 cm
881 q
882 1 0 0 1 6.6 6.6 cm
883 q
884 .662745 .662745 .662745 RG
885 .5 w
886 .960784 .960784 .862745 rg
887 n -6 -6 468.6898 24 re B*
888 Q
889 q
890 .960784 .960784 .862745 rg
891 n 0 0 42 12 re f*
892 .960784 .960784 .862745 rg
893 n 48 0 6 12 re f*
894 .960784 .960784 .862745 rg
895 n 60 0 6 12 re f*
896 .960784 .960784 .862745 rg
897 n 66 0 6 12 re f*
898 .960784 .960784 .862745 rg
899 n 72 0 12 12 re f*
900 .960784 .960784 .862745 rg
901 n 84 0 6 12 re f*
902 .960784 .960784 .862745 rg
903 n 96 0 18 12 re f*
904 .960784 .960784 .862745 rg
905 n 120 0 6 12 re f*
906 .960784 .960784 .862745 rg
907 n 132 0 12 12 re f*
908 .960784 .960784 .862745 rg
909 n 150 0 30 12 re f*
910 .960784 .960784 .862745 rg
911 n 180 0 6 12 re f*
912 .960784 .960784 .862745 rg
913 n 186 0 30 12 re f*
914 .960784 .960784 .862745 rg
915 n 216 0 12 12 re f*
916 BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (squares) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (\() Tj 0 0 0 rg (i) Tj .4 .4 .4 rg (**) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg ( ) Tj /F4 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (i) Tj 0 0 0 rg ( ) Tj /F4 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (range) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (10000) Tj 0 0 0 rg (\)\)) Tj T* ET
917 Q
918 Q
919 Q
920 Q
921 Q
922 q
923 1 0 0 1 62.69291 434.2236 cm
924 q
925 0 0 0 rg
926 BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .57229 Tw (Generators are lazy, values are calculated when needed, meaning they can represent infinite sequences) Tj T* 0 Tw (without requiring infinite memory.) Tj T* ET
927 Q
928 Q
929  
930 endstream
931 endobj
932 18 0 obj
933 <<
934 /Nums [ 0 19 0 R 1 20 0 R ]
935 >>
936 endobj
937 19 0 obj
938 <<
939 /S /D /St 1
940 >>
941 endobj
942 20 0 obj
943 <<
944 /S /D /St 2
945 >>
946 endobj
947 xref
948 0 21
949 0000000000 65535 f 
950 0000000073 00000 n 
951 0000000144 00000 n 
952 0000000251 00000 n 
953 0000000363 00000 n 
954 0000000468 00000 n 
955 0000000578 00000 n 
956 0000000783 00000 n 
957 0000000898 00000 n 
958 0000001103 00000 n 
959 0000001208 00000 n 
960 0000001466 00000 n 
961 0000001540 00000 n 
962 0000001660 00000 n 
963 0000001799 00000 n 
964 0000001910 00000 n 
965 0000001976 00000 n 
966 0000021437 00000 n 
967 0000027477 00000 n 
968 0000027527 00000 n 
969 0000027561 00000 n 
970 trailer
971 <<
972 /ID 
973 [<7b776b85e1f11c424682a79edf2f54eb><7b776b85e1f11c424682a79edf2f54eb>]
974 % ReportLab generated PDF document -- digest (http://www.reportlab.com)
975
976 /Info 10 0 R
977 /Root 9 0 R
978 /Size 21
979 >>
980 startxref
981 27595
982 %%EOF