Guido van Rossum wrote:
So now I'd like to choose between enumerate() and indexer(). Any closing arguments?
A few thoughts: + the nice thing about enumerate is that it has the word 'number' in it. - it is not obvious to me at first blush that 'enumerating' and 'iterating' elicit different 'first-guess semantics' - The first meaning I'd guess for enumerate(foo) would be range(len(foo)). One reason I suggested 'indexer' is that the tuples (index, element) are what I think of as an index entry -- it's a pair of (key, the element being located) A problem with indexer that I just realized is that indexer(dictionary) does return (number, value) pairs, while one might reasonably expect it to generate the same thing as dictionary.iteritems(). >>> print d {'y': 'foo', 'x': 123, 'z': 1j} >>> for (k,v) in indexer(d): ... print k, v ... 0 y 1 x 2 z >>> for (k,v) in d.iteritems(): ... print k, v ... y foo x 123 z 1j >>> for (k,v) in enumerate(d): ... print k, v ... 0 y 1 x 2 z Actually, having the function return the dictionary _keys_ as the second element in the tuple is a little weird. But I guess that's just the consequence of the earlier choice w.r.t. iter(dict). All things considered, even though I suggested 'indexer()', I'm voting for 'enumerate()' because of the numeric focus as opposed to a 'key' focus. --da