如何从F#中的数组列表中提取元素?

mad*_*ant 2 .net f#

F#中有一个列表列表:

> wCost;;
val it : (float * float) list =
  [(0.1, 13.61972782); (1.527722646, 1.123863823); 
   (1.850460992, 0.4853361402);
   (1.923416366, 0.452707936); (1.939908012, 0.4510406634);
   (1.943635968, 0.4509554673); (1.944478676, 0.4509511138)]
Run Code Online (Sandbox Code Playgroud)

我可以使用索引检索第一个列表:

> wCost.[0];;
val it : float * float = (0.1, 13.61972782)
Run Code Online (Sandbox Code Playgroud)

但是,如果我将检索第一个列表的第二个元素,不幸的是,它与我预期的不一样

e.g. wCost[0][0] // it cannot retrieve the second element of first list.
13.61972782
Run Code Online (Sandbox Code Playgroud)

请随时评论如何检索列表元素.谢谢.

小智 7

实际上,您有一个元组列表,而不是列表列表.

这意味着当您第一次索引列表时,您将返回一个元组(即一个int * int)而不是一个列表.

要访问的元素,你这样使用fstsnd关键字来访问的元素:看https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/operators.fst%5B "T1," T2%5D-功能- %5Bfsharp%5D

在你的情况下,你会写,fst (wCost.[0])以获得你想要的.