如何在F#中将列表的两个第n个元素相乘

时间:2015-10-20 09:54:48

标签: f#

所以我试图将一个列表的第n个元素与另一个列表的第n个元素相乘并将它们加在一起

 let listMulti xList yList =
 |> [for x in xList do
       for y in yList do
           yield x*y ] // multiplies all the elements on x with y
 |> List.filter(fun x-> List.nth % List.length (xList) =1 ) //gets the elements 1 , 4, 7 for a list of size 3. This is scalable
 |> List.sum //add them all up

所以这里的想法是

>listMulti [1;2;3][4;5;6];;
val it : int = 32

所以1 * 4 + 2 * 5 + 3 * 6 = 32 ,而是我得到了

错误FS0010:绑定中的意外中缀运算符

帮助?

1 个答案:

答案 0 :(得分:3)

错误是因为您以奇怪的方式使用List.nth

我会做像

这样的事情
List.zip xlist ylist
|> List.sumBy (fun (a,b) -> a*b)

此处list.zip结合了列表 - 因此,如果您有[1;2;3][4;5;6],则会获得[(1,4);(2,5);(3,6)]。然后你只需要一次乘法和求和。