iterators and views of lists

Rhodri James rhodri at wildebst.demon.co.uk
Sat Dec 19 21:01:22 EST 2009


On Fri, 18 Dec 2009 21:10:28 -0000, Brendan Miller <catphive at catphive.net>  
wrote:

> When I said they are "weak" I meant it in sense that the algorithms
> writeable against an InputerIterator interface (which is what python's
> iterator protocol provides) is a proper subset of the algorithms that
> can be written against a RandomAccessIterator interface. The class of
> algorithms expressible against a python iterator is indeed limited to
> those that can be expressed with a for each loop or map/reduce
> operation.

I think the most relevant thing that can be said to this is that you need  
to stop trying to write Python code as if it was C++.  The languages  
constructs are intended for different purposes; iterators in C++ are part  
of the small arsenal of devices needed to provide type-independence to  
algorithms, something that comes a lot more easily to Python through  
dynamic typing and easy slicing.  I'm barely literate in C++, but I can't  
see uses for a C++ random access iterator that aren't served in Python by  
simple indexing (possibly with additional bounds checking) or a Python  
iterator (possibly over a sliced sequence).

The downside, of course, is that you don't have the security provided by  
static type checking.  You pays your money, you takes your choice;  
preferably, however, you don't do like a friend of mine and try to write  
FORTRAN in whatever language you're using!

-- 
Rhodri James *-* Wildebeeste Herder to the Masses



More information about the Python-list mailing list