所以我试图将一个列表的第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:绑定中的意外中缀运算符
帮助?
答案 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)]
。然后你只需要一次乘法和求和。