[Gustavo Niemeyer wrote] > > > If anything at all, i'd suggest a std-module which contains e.g. > > > 'sort', 'reverse' and 'extend' functions which always return > > > a new list > > > a new list, so that you could write: > > > > > > for i in reverse(somelist): > > > ... sort: This is being addressed by the proposed list.copysort() method reverse: This is being addressed by PEP-0322. When I get a chance, the PEP will be revised to propose a builtin instead of various methods attached to specific sequence objects. extend: How would this differ from itertools.chain() ? > > 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. Raymond Hettinger
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