[Python-Dev] Retrieve an arbitrary element from a set without removing it

Terry Reedy tjreedy at udel.edu
Fri Oct 23 21:04:12 CEST 2009


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



More information about the Python-Dev mailing list