> [Gustavo Niemeyer wrote] > > > You can do reverse with [::-1] now. > > [Holger Krekel] > > sure, but it's a bit unintuitive and i mentioned not only reverse :-) > > > > Actually i think that 'reverse', 'sort' and 'extend' algorithms > > could nicely be put into the new itertools module. > > > > There it's obvious that they wouldn't mutate objects. And these > > algorithms > > (especially extend and reverse) would be very efficient as iterators > > because > > they wouldn't create temporary lists/tuples. > > To be considered as a possible itertool, an ideal candidate should: > > * work well in combination with other itertools > * be a fundamental building block > * accept all iterables as inputs > * return only an iterator as an output > * run lazily so as not to force the inputs to run to completion > unless externally requested by list() or some such. > * consume constant memory (this rule was bent for itertools.cycle(), > but should be followed as much as possible). > * run finitely if some of the inputs are finite (itertools.repeat(), > count() and cycle() are the only intentionally infinite tools) > > There is no chance for isort(). Once you've sorted the whole list, > there is no advantage to returning an iterator instead of a list. > > The problem with ireverse() is that it only works with objects that > support __getitem__() and len(). That pretty much precludes > generators, user defined class based iterators, and the outputs > from other itertools. So, while it may make a great builtin (which > is what PEP-322 is going to propose), it doesn't fit in with other > itertools. How about making islice be more lenient about inputs? For example x[::-1] should be expressable by islice(x, None, None, -1) when the input implements __len__ and __getitem__ -- but it's not. [::-1] *does* create a temporary list, because Python doesn't have "views" of lists/tuples. islice should also let you go backwards in general, islice(x, len(x)-1, None, -2) should work. -bob
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4