[Raymond Hettinger] > > I am evaluating a request for an alternate version of itertools.izip() > > that has a None fill-in feature like the built-in map function: > > > > >>> map(None, 'abc', '12345') # demonstrate map's None fill-in feature
[Paul Rubin] > I think finding different ways to write it was an entertaining > exercise but it's too limited in usefulness to become a standard > feature. Makes sense. > I do think some idiom ought to develop to allow checking whether an > iterator is empty, without consuming an item. Here's an idea: > introduce something like > > iterator = check_empty(iterator) There are so many varieties of iterator that it's probably not workable to alter the iterator API for all of the them. In any case, a broad API change like this would need its own PEP. > There are some obvious problems with the above: > > 1) the new iterator should support all of the old one's attributes, > not just inherit its operations > 2) In the case where the old iterator is already buffered, the > constructor should just peek at the lookahead instead of making > a new object. That means that checking an iterator multiple times > won't burn more and more memory. > > Maybe there is some way of doing the above with metaclasses but I've > never been able to wrap my head around those. Metaclasses are unlikely to be of help because there are so many, unrelated kinds of iterator -- most do not inherit from a common parent. Raymond -- http://mail.python.org/mailman/listinfo/python-list