diff --git a/Lib/sets.py b/Lib/sets.py index 6245d531550..bb4428064d1 100644 --- a/Lib/sets.py +++ b/Lib/sets.py @@ -280,13 +280,14 @@ def _compute_hash(self): def _update(self, iterable): # The main loop for update() and the subclass __init__() methods. - # XXX This can be optimized a bit by first trying the loop - # without setting up a try/except for each element. data = self._data value = True - for element in iterable: + it = iter(iterable) + while True: try: - data[element] = value + for element in it: + data[element] = value + return except TypeError: transform = getattr(element, "_as_immutable", None) if transform is None: