# Product of two lists

L1 := {{a, b}, {c, d}, {e, f}}
L2 := {{g, h, i}, {j, k, q}}


I need the result

{{{a g, a h, a i}, {c g, c h, c i}, {e g, e h, e i}},
{{b j, b k, b q}, {d j, d k, d q}, {f j, f k, f q}}}

• Look up Outer[] and MapThread[]. – J. M. will be back soon Dec 17 '16 at 8:17
• I tried, i think there is additional some thing with any of them – Ali Dec 17 '16 at 8:19
• Outer provide more terms than this result and MapThread  provide less one. – Ali Dec 17 '16 at 8:22

Also

Transpose @@ Outer[Times, {L2}, L1, 1]

Transpose[# L2 & /@ L1]

• Last one is pretty, +1 – ciao Dec 28 '16 at 0:38
MapThread[Outer[Times, #, #2] &, {L1\[Transpose], L2}]


Or simpler:

MapThread[KroneckerProduct, {L1\[Transpose], L2}]

• Many thanks for you, it works. – Ali Dec 17 '16 at 8:51
• @Ali if this worked for you consider accepting the answer. Benefits the answerer and also indicates to people that the question has been answered sufficiently well. – b3m2a1 Dec 27 '16 at 23:05

Also

KroneckerProduct @@@ Transpose@{Transpose@L1, L2}
Outer[Times, ##] & @@@ Transpose@{Transpose@L1, L2}


{{{a g, a h, a i}, {c g, c h, c i}, {e g, e h, e i}}, {{b j, b k, b q}, {d j, d k, d q}, {f j, f k, f q}}}