如何从迭代序列中提取数据
How to extract data from iterating a sequence
csvData1
包含 .csv 文件中的数据。我只用电子表格中的两列创建了一个序列
("GIC-ID", "COVERAGE DESCRIPTION")
let mappedSeq1 =
seq { for csvRow in csvData1 do yield (csvRow.[2], csvRow.[5]) }
在 Visual Studio 调试器中查找 x
结果是 System.Tuple<string,string>
。
for x in mappedSeq1 do
printfn "%A" x
printfn "%A" x.ToString
这是执行的结果
for x in mappedSeq1
("GIC-ID", "COVERAGE DESCRIPTION")
<fun:main@28>
我很难弄清楚如何访问 x
,所以我可以提取第一个元素。
您可以使用模式匹配来解构元组
for (a, b) in mappedSeq1 do
// ...
或
for x in mappedSeq1 do
let a, b = x
或者,对于 2 元组,您可以使用内置函数 fst
和 snd
使用 Seq.map
和 fst
获取仅包含元组第一个组件的序列:
let firstOnly = mappedSeq |> Seq.map fst
csvData1
包含 .csv 文件中的数据。我只用电子表格中的两列创建了一个序列
("GIC-ID", "COVERAGE DESCRIPTION")
let mappedSeq1 =
seq { for csvRow in csvData1 do yield (csvRow.[2], csvRow.[5]) }
在 Visual Studio 调试器中查找 x
结果是 System.Tuple<string,string>
。
for x in mappedSeq1 do
printfn "%A" x
printfn "%A" x.ToString
这是执行的结果
for x in mappedSeq1
("GIC-ID", "COVERAGE DESCRIPTION")
<fun:main@28>
我很难弄清楚如何访问 x
,所以我可以提取第一个元素。
您可以使用模式匹配来解构元组
for (a, b) in mappedSeq1 do
// ...
或
for x in mappedSeq1 do
let a, b = x
或者,对于 2 元组,您可以使用内置函数 fst
和 snd
使用 Seq.map
和 fst
获取仅包含元组第一个组件的序列:
let firstOnly = mappedSeq |> Seq.map fst