将一个列表和一个列表的列表相乘

Multiply a list and a list of lists

我试图将 list2 的第一个元素乘以 list1 中第一个列表的每个元素,然后将 list2 的第二个元素乘以 list1 中第二个列表的每个元素,依此类推。

let list1 = [[5;6;7];[8;9;10];[11;12;13]]

let list2 = [2;3;4]

我想要的输出是[[10; 12; 14]; [24; 27; 30]; [44; 48; 52]]

我试过了

list1 |> List.map (List.map2 (*) list2)

产生[[10; 18; 28]; [16; 27; 40]; [22; 36; 52]]

这是一个基本的解决方案:

let multElem list elem =
    list |> List.map ((*) elem)

let mult list1 list2 =
    List.map2 multElem list1 list2

mult list1 list2