我目前有一个列表,其中包含其他列表。 [[1,2,3]; [9,8,7]; ...]
我想从我在整个列表中存储的这3个元素列表之一中的两个索引创建一个元组列表。
我写了类似的东西
let makeTuple list =
let rec tuple list tuplesList =
match list with
| [] -> ()
| h::t -> (tuple t ( (List.item 2 list, List.item 5 list)::tuplesList))
tuple list []
当我运行此函数时,它给我一个错误,即索引超出范围。我尝试了其他选项,但似乎无法理解其中的任何一个。我是F-sharp的新手:-S。任何提示都很棒。
答案 0 :(得分:0)
目前尚不清楚100%您期望什么输出。但是此修订版本至少可以运行并返回一个元组列表,所以也许它接近您想要的。
let makeTuple list =
let rec tuple list tuplesList =
match list with
| [] -> tuplesList
| h::t -> (tuple t ( (List.item 0 h, List.item 2 h)::tuplesList))
tuple list []
let lst = [ [1; 2; 3]; [9; 8; 7]; [14; 15; 16]]
lst |> makeTuple
输出:
val makeTuple : list:'a list list -> ('a * 'a) list
val lst : int list list = [[1; 2; 3]; [9; 8; 7]; [14; 15; 16]]
val it : (int * int) list = [(14, 16); (9, 7); (1, 3)]