Python 3.0 introduces two new ways of "comprehending". We had list comprehensions before. Now there are set & dict comprehensions in the language.
Let us say there are two lists. For generating the list of unique products of numbers in the list, in Python 2.x, this could be done in 2 approaches. 1. Using a set, >>> l=[1,2,3,4] >>> m=[3,4,5,6] >>> set([x*y for x in l for y in m]) {3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24} 2. Using a dictionary and inserting the values as keys, >>> l=[1,2,3,4] >>> m=[3,4,5,6] >>> d = {} >>> [d.setdefault(x*y, 0) for x in l for y in m] >>> d.keys() [3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24] >>> In Python 3.0, this is straight-forward using "set comprehensions". Set comprehensions are like list comprehensions but with braces replacing the square brackets. And they produce sets, not lists. So the approach (1) in py3k is a one-liner. >>> {x*y for x in l for y in m} {3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24} The approach (2) is also possible, since we now have "dict comprehensions" too! Which means you can build a dict in place without having to define one before and using 'setdefault' etc. >>> d={x*y:0 for x in l for y in m} >>> list(d.keys()) [3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24] Note that the (list(d.keys)) is needed in Py3k since d.keys() no longer return a list as it used to in Py 2.x, but instead returns a generator. Regards, --Anand -- -Anand _______________________________________________ BangPypers mailing list BangPypers@python.org http://mail.python.org/mailman/listinfo/bangpypers