[Python-3000] Iterators for dict keys, values, and items == annoying :)

Greg Ewing greg.ewing at canterbury.ac.nz
Fri Mar 24 10:44:54 CET 2006


Ian Bicking wrote:

> Iterators look a lot like containers.

Actually, they hardly look like containers at all. About
the only thing you can do with a container that you can
also do with an iterator is use it in a for-loop. There
are a great many other things you *can't* do with an
iterator -- index it, slice it, take its len(), etc.

In some ways it's rather misleading that you're
allowed to say

   for x in iterator:

because the items are not "in" the iterator, they're
*produced* by the iterator on demand.

I've speculated that perhaps it should be illegal to
use an iterator that way, and you would instead have
to say

   for x from iterator:

This would force people to keep the distinction firmly
in mind and might lead to less confusion.

Greg


More information about the Python-3000 mailing list