> On the other hand, list comps using an if clause can't be written as pure > maps. You can do this: > > [func(x) for x in seq if cond(x)] > > filter(cond, map(func, seq)) > > but the second version may use much more temporary memory if seq is huge > and cond very rarely true.
You could use ifilter, imap there to reduce memory. > And I don't think you could write this as a single map: > > [func(a, b) for a in seq1 for b in seq2] Oh you surely could: seq1, seq2 = [1,2,3], [4,5,6] [a+b for a in seq1 for b in seq2] ->[5, 6, 7, 6, 7, 8, 7, 8, 9] from itertools import product map(sum, product(seq1, seq2)) ->[5, 6, 7, 6, 7, 8, 7, 8, 9] Peace, ----aht -- http://mail.python.org/mailman/listinfo/python-list