Ned Batchelder <n...@nedbatchelder.com>: > This analogy illuminates an important point: a single iterable can have > a number of active iterators working over it at once, just as a book can > have a number of bookmarks in it at once. > > nums = [1, 2, 3] > for i in nums: > for j in nums: > print i, j > > This prints all the pairs of numbers, because the iterator in the first > loop is independent of the iterator(s) in the second loop, even though > they are iterating over the same iterator (the nums list). Without the > extra indirection of iterators over iterables, this code would get > tangled up.
I don't have a problem with a list being a "reiterable." I only was surprised about range(), which I had thought to be a plain, down-to-earth iterator. There's barely any other practical use for a range, I believe. Marko -- https://mail.python.org/mailman/listinfo/python-list