我想写这种程序(这是一个简单的例子来解释我想做什么):
// #r "FSharp.PowerPack.dll"
open Microsoft.FSharp.Math
// Definition of my products
let product1 = matrix [[0.;1.;0.]]
let product2 = matrix [[1.;1.;0.]]
let product3 = matrix [[1.;1.;1.]]
// Instead of this (i have hundreds of products) :
printfn "%A" product1
printfn "%A" product2
printfn "%A" product3
// I would like to do something like this (and it does not work):
for i = 1 to 3 do
printfn "%A" product&i
提前谢谢!!!!!
答案 0 :(得分:12)
您可以使用矩阵列表代替为单个矩阵使用单独的变量:
let products = [ matrix [[0.;1.;0.]]
matrix [[1.;1.;0.]]
matrix [[1.;1.;1.]] ]
如果您的矩阵是硬编码的(如您的示例所示),那么您可以使用上面的符号初始化列表。如果它们以某种方式计算(例如,作为对角线或排列或类似的东西),那么可能有更好的方法来创建列表,使用List.init
或使用类似的函数。
获得列表后,可以使用for
循环迭代它:
for product in products do
printfn "%A" product
(在您的示例中,您没有使用索引进行任何操作 - 但如果由于某种原因需要建立索引,则可以使用[| ... |]
创建数组,然后使用products.[i]
)< / p>
答案 1 :(得分:1)
你也可以这样做:
matrix [ [ 0.; 1.; 0. ];
[ 1.; 1.; 0. ];
[ 1.; 1.; 1. ]; ]
|> Seq.iter(fun p -> printf "%A" p)