Leif K-Brooks <[EMAIL PROTECTED]> wrote in message news:<[EMAIL PROTECTED]>... > Is there a word for an iterable object which isn't also an iterator, and > therefor can be iterated over multiple times without being exhausted? > "Sequence" is close, but a non-iterator iterable could technically > provide an __iter__ method without implementing the sequence protocol, > so it's not quite right.
"reiterable". I think I was the first to use this word on comp.lang.python. If you have code that requires this property might want to use this function: .def reiter(x): . i = iter(x) . if i is x: . raise TypeError, "Object is not re-iterable" . return i example: .for outer in x: . for inner in reiter(y): . do_something_with(outer, inner) This will raise an exception when an iterator is used for y instead of silently failing after the first time through the outer loop and making it look like an empty container. When iter() returns a new iterator object it is a good hint but not a 100% guarantee that the object is reiterable. For example, python 2.2 returned a new xreadlines object for iterating over a file but it messed up the underlying file object's state so it still wasn't reiterable. But when iter() returns the same object - well, that's a sign that the object is definitely not reiterable. Oren -- http://mail.python.org/mailman/listinfo/python-list