Il Tue, 17 Mar 2009 08:18:08 +0100, Peter Otten ha scritto: > Mensanator wrote: > >> On Mar 16, 1:40 pm, Peter Otten <__pete...@web.de> wrote: >>> mattia wrote: >>> > I have 2 lists, like: >>> > l1 = [1,2,3] >>> > l2 = [4,5] >>> > now I want to obtain a this new list: l = >>> > [(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)] Then I'll have to transform >>> > the values found in the new list. Now, some ideas (apart from the >>> > double loop to aggregate each element of l1 with each element of >>> > l2): >>> > - I wanted to use the zip function, but the new list will not >>> > aggregate (3,4) and (3,5) >>> > - Once I've the new list, I'll apply a map function (e.g. the exp of >>> > the values) to speed up the process >>> > Some help? >>> >>> Why would you keep the intermediate list? >>> >>> With a list comprehension: >>> >>> >>> a = [1,2,3] >>> >>> b = [4,5] >>> >>> [x**y for x in a for y in b] >>> >>> [1, 1, 16, 32, 81, 243] >>> >>> With itertools: >>> >>> >>> from itertools import product, starmap from operator import pow >>> >>> list(starmap(pow, product(a, b))) >>> >>> [1, 1, 16, 32, 81, 243] >> >> That looks nothing like [(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)]. > > The point of my post was that you don't have to calculate that list of > tuples explicitly. > > If you read the original post again you'll find that Mattia wanted that > list only as an intermediate step to something else. He gave "the exp of > values" as an example. As math.exp() only takes one argument I took this > to mean "exponentiation", or **/pow() in Python. > > Peter
Correct, and thanks for all the help. -- http://mail.python.org/mailman/listinfo/python-list