python - Getting <generator object <genexpr> -


i have 2 lists:

first_lst = [('-2.50', 0.49, 0.52), ('-2.00', 0.52, 0.50)] second_lst = [('-2.50', '1.91', '2.03'), ('-2.00', '1.83', '2.08')] 

i want following math it:

multiply 0.49 1.91 (the corresponding values first_lst , second_lst), , multiply 0.52 2.03 (corresponding values also). want under condition values @ position 0 in each corresponding tuple idential -2.50 == -2.50 etc. obviously, same math remaning tuples well.

my code:

[((fir[0], float(fir[1])*float(sec[1]), float(fir[2])*float(sec[2])) fir in first_lst) sec in second_lst if fir[0] == sec[0]] 

generates object:

[<generator object <genexpr> @ 0x0223e2b0>] 

can me fix code?

you need use tuple() or list() convert generator expression list or tuple:

[tuple((fir[0], fir[1]*sec[1], fir[2]*sec[2]) fir in first_lst)\                                sec in second_lst if fir[0] == sec[0]] 

working version of code:

>>> first_lst = [tuple(float(y) y in x) x in first_lst] >>> second_lst = [tuple(float(y) y in x) x in second_lst]  >>> [((fir[0],) + tuple(x*y x, y in zip(fir[1:], sec[1:]))) \                   fir in first_lst sec in second_lst if fir[0]==sec[0]] [(-2.5, 0.9359, 1.0555999999999999), (-2.0, 0.9516000000000001, 1.04)] 

Comments

Popular posts from this blog

Perl - how to grep a block of text from a file -

delphi - How to remove all the grips on a coolbar if I have several coolbands? -

javascript - Animating array of divs; only the final element is modified -