튜플 배열을 2 차원 배열로 변환하는 더 나은 방법이 있습니까?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 차원 배열로 변환하는 더 나은 방법이 있습니까?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]));;
더 간결한 방법은 array2D 사용하는 것입니다
[|("a", "1"); ("b", "2"); ("c", "3")|]
|> Seq.map (fun (x, y) -> [|x; y|])
|> array2D
을하지만, 예를 들어 쉽게 초기화를 위해 처음부터 배열의 배열을 사용하지 않는 이유는 어떤 이유가
let arr =
[|[|"a"; "1"|];
[|"b"; "2"|];
[|"c"; "3"|]|]
|> array2D
가장 쉬운 옵션은 array2D
기능을 사용한다는 것이 @pad에 동의합니다. 나는 일반적으로 (Seq.map
같은) 고차원 적 기능을 통해 시퀀스 표현식을 사용하는 것을 선호, 그래서 아마 작성합니다
let arr =
array2D [ for char, num in list ->
[ char; num ] ]
이 본질적으로 @pad의 답변으로 같은 일을한다. 목록 구조 목록은 array2D
으로 예상되는 데이터 구조입니다 (외부를 seq { .. }
으로 작성하는 것이 더 효율적이지만 목록은 단순하게 사용했습니다).
정말 변경할 수없는 함수에서 튜플 목록을 받고 있습니다. –