[Python-Dev] Retrieve an arbitrary element from a set without removing it (original) (raw)

John Arbash Meinel john.arbash.meinel at gmail.com
Fri Oct 23 22:11:57 CEST 2009


Terry Reedy wrote:

John Arbash Meinel wrote:

So 'for x in s: break' is about 2x faster than next(iter(s)) and 3x faster than (iter(s).next()). I was pretty surprised that it was 30% faster than "for x in s: pass". I assume it has something to do with a potential "else:" statement? for x in s: pass iterates through all the elements in s and leaves x bound to the arbritrary last one instead of the arbitrary first one. For a large set, this would be a lot slower, not just a little. fwiw, I think the use case for this is sufficiently rare that it does not need a separate method just for this purpose. tjr

The point of my test was that it was a set with a single item, and 'break' was 30% faster than 'pass'. Which was surprising. Certainly the difference is huge if there are 10k items in the set.

John =:->



More information about the Python-Dev mailing list