This chapter continues the advanced function topics theme, with a
reprisal of the comprehension and iteration concepts introduced in Chapter 14. Because list
comprehensions are as much related to the prior chapter’s functional
filter) as they are to
for loops, we’ll revisit them in this context
here. We’ll also take a second look at iterators in order to study
generator functions and their generator expression
relatives—user-defined ways to produce results on demand.
Iteration in Python also encompasses user-defined classes, but we’ll defer that final part of this story until Part VI, when we study operator overloading. As this is the last pass we’ll make over built-in iteration tools, though, we will summarize the various tools we’ve met thus far, and time the relative performance of some of them. Finally, because this is the last chapter in the part of the book, we’ll close with the usual sets of “gotchas” and exercises to help you start coding the ideas you’ve read about.
In the prior chapter, we studied functional programming tools like
filter, which map operations over sequences
and collect results. Because this is such a common task in Python
coding, Python eventually sprouted a new expression—the list
comprehension—that is even more flexible than the tools we
just studied. In short, list comprehensions apply an arbitrary
expression to items in an iterable, ...