[Alex Martelli] > If you want to hoist for performance, you can hoist more: > > appenders = foo.append, qux.append > while some_condition: > for appender, anitem in zip(appenders, calculate_something()): > appender(anitem)
You are of course claiming a performance improvement over Carl's variant, but looking back into the initial post [Lonnie Princehouse] > foo = [] > qux = [] > > while some_condition: > a, b = calculate_something() > foo.append(a) > qux.append(b) the original code looks like yours with the inner loop unrolled - a classic measure for performance improvement. $ python -m timeit -s'ext = [].extend, [].extend' -s'def calc(): return (), ()' 'for ix, i in zip(ext, calc()): ix(i)' 100000 loops, best of 3: 2.79 usec per loop $ python -m timeit -s'ax = [].extend; bx = [].extend' -s'def calc(): return (), ()' 'a, b = calc(); ax(a); bx(b)' 1000000 loops, best of 3: 0.975 usec per loop (I used extend instead of append() to avoid the effects of memory hogging) I find the faster code more readable than yours - and Lonnie's cool hack - so I'd leave it at that. Peter -- http://mail.python.org/mailman/listinfo/python-list