Please consider: >>> from itertools import chain >>> def enum3(x): return ((x,n) for n in range(3)) ... >>> list(enum3('a')) [('a', 0), ('a', 1), ('a', 2)]
# Rewrite the same expression four different ways: >>> list(chain( enum3('a'), enum3('b'), enum3('c') )) [('a', 0), ('a', 1), ('a', 2), ('b', 0), ('b', 1), ('b', 2), ('c', 0), ('c', 1), ('c', 2)] >>> list(chain( *(enum3(x) for x in 'abc') )) [('a', 0), ('a', 1), ('a', 2), ('b', 0), ('b', 1), ('b', 2), ('c', 0), ('c', 1), ('c', 2)] >>> list(chain( ... (('a',n) for n in range(3)), ... (('b',n) for n in range(3)), ... (('c',n) for n in range(3)) )) [('a', 0), ('a', 1), ('a', 2), ('b', 0), ('b', 1), ('b', 2), ('c', 0), ('c', 1), ('c', 2)] >>> list(chain( *(((x,n) for n in range(3)) for x in 'abc') )) [('c', 0), ('c', 1), ('c', 2), ('c', 0), ('c', 1), ('c', 2), ('c', 0), ('c', 1), ('c', 2)] Huh? Can anyone explain why the last result is different? (This is with Python 2.6) Thanks in advance! -- Dave Abrahams BoostPro Computing http://www.boostpro.com -- http://mail.python.org/mailman/listinfo/python-list