> $ python -m timeit -s "s = set('abcdef')" "x = iter(s).next()"
> 1000000 loops, best of 3: 0.399 usec per loop
>
> $ python -m timeit -s "s = set('abcdef')" "x = s.pop(); s.add(x)"
> 1000000 loops, best of 3: 0.339 usec per loop
>
> So it looks like it's more efficient to use s.pop() + s.add().
There's a faster, cleaner way:
>python -m timeit -s "s = set('abcdef')" "x = iter(s).next()"
1000000 loops, best of 3: 0.539 usec per loop
>python -m timeit -s "s = set('abcdef')" "x = s.pop(); s.add(x)"
1000000 loops, best of 3: 0.465 usec per loop
>python -m timeit -s "s = set('abcdef')" "for x in s: break"
1000000 loops, best of 3: 0.175 usec per loop
FWIW, the latter approach is general purpose and works with any
iterable (useful for reading the first line of file objects for
example).
Raymond
--
http://mail.python.org/mailman/listinfo/python-list