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