[Python-Dev] Lockstep iteration - eureka!
Paul Prescod
paul@prescod.net
Wed, 16 Aug 2000 00:30:06 -0400
Tim Peters wrote:
>
> ...
>
> But if you add seq.items(), you had better add seq.keys() too, and
> seq.values() as a synonym for seq[:]. I guess the perceived advantage of
> adding seq.items() is that it supplies yet another incredibly slow and
> convoluted way to get at the for-loop index? "Ah, that's the ticket! Let's
> allocate gazillabytes of storage and compute all the indexes into a massive
> data structure up front, and then we can use the loop index that's already
> sitting there for free anyway to index into that and get back a redundant
> copy of itself!" <wink>.
>
> not-a-good-sign-when-common-sense-is-offended-ly y'rs - tim
.items(), .keys(), .values() and range() all offended my common sense
when I started using Python in the first place. I got over it.
I really don't see this "indexing" issue to be common enough either for
special syntax OR to worry alot about efficiency. Nobody is forcing
anyone to use .items(). If you want a more efficient way to do it, it's
available (just not as syntactically beautifu -- same as range/xrangel).
That isn't the case for dictionary .items(), .keys() and .values().
Also, if .keys() returns a range object then theoretically the
interpreter could recognize that it is looping over a range and optimize
it at runtime. That's an alternate approach to optimizing range literals
through new byte-codes. I don't have time to think about what that would
entail right now.... :(
--
Paul Prescod - Not encumbered by corporate consensus
Simplicity does not precede complexity, but follows it.
- http://www.cs.yale.edu/homes/perlis-alan/quotes.html