On Thu, Aug 16, 2012 at 12:00 PM, Aaron Brady <castiro...@gmail.com> wrote:
> The inconsistency is, if we remove an element from a set and add another 
> during iteration, the new element might appear later in the iteration, and 
> might not, depending on the hash code; therefore comparing the size of the 
> set between iterations isn't adequate.  Example:

It can be more than just the new element.  For example, here the
entire set is repeated (Python 3.2):

>>> s = set(range(8, 13))
>>> it = iter(s)
>>> from itertools import islice
>>> list(islice(it, 5))  # avoid exhausting the iterator
[8, 9, 10, 11, 12]
>>> s.add(13)
>>> s.remove(13)
>>> list(it)
[8, 9, 10, 11, 12]

This occurs because the addition of the sixth item triggers a resize
of the underlying hash table, and the existing items, which were
originally in slots 0-4, are now in slots 8-12.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to