From 80d21af614038a3163b1def661a5087735865395 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Wed, 21 Aug 2002 04:12:03 +0000 Subject: [PATCH] Sped ._update() method by factoring try/except out of the inner loop. --- Lib/sets.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 @@ class BaseSet(object): 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: