The abstract notion of a sequence of objects is ubiquitous in programming. It can be used to model such widely different concepts as simple strings, lists of complex objects, and indefinitely long sensor output streams. It probably won't surprise you to learn that Python includes some very powerful and elegant tools for working with sequences. In fact, Python's support for creating and manipulating sequences is one of the highlights of the language for many people.
In this chapter we'll look at three key tools that Python provides for working with sequences: Comprehensions, iterables, and generators. Comprehensions comprise a dedicated syntax for creating various types of sequences declaratively. Iterables and the iteration protocols form the core abstraction and API for sequences and iteration in Python; they allow...