タプルの配列を2次元配列に変換するためのより良いアプローチがあるのだろうか?
let list = [|("a", "1"); ("b", "2"); ("c", "3")|];;
let arr = Array2D.init (Array.length list) 2 (fun i j -> if j <> 0 then (fst list.[i]) else (snd list.[i]));;
タプルの配列を2次元配列に変換するためのより良いアプローチがあるのだろうか?
let list = [|("a", "1"); ("b", "2"); ("c", "3")|];;
let arr = Array2D.init (Array.length list) 2 (fun i j -> if j <> 0 then (fst list.[i]) else (snd list.[i]));;
最も簡単なオプションは関数を使用することであるという @pad に同意しarray2D
ます。私は通常、高階関数 ( などSeq.map
) よりもシーケンス式を使用することを好むので、おそらく次のように記述します。
let arr =
array2D [ for char, num in list ->
[ char; num ] ]
これは、@pad からの回答と本質的に同じことを行います。によって期待されるデータ構造であるリストのリストを作成しますarray2D
(outer を as と書く方が効率的seq { .. }
ですが、簡単にするためにリストを使用しました)。