On Mar 17, 2:18 am, Peter Otten <__pete...@web.de> wrote: > 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.
Ok, nevermind. > > 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- Hide quoted text - > > - Show quoted text - -- http://mail.python.org/mailman/listinfo/python-list