Python Iterators and Iterable Objects

From zip() to Building Your Own Iterators