【Julia入門】Juliaのコレクション① タプル型オブジェクト

統計や機械学習に関するプログラミングではPythonRが用いられることが多いですが、近年Juliaも注目を集めています。そこで当シリーズではJuliaの基本構文からライブラリの用い方などについて取りまとめます。当記事ではJuliaのタプル型オブジェクトについて取りまとめを行いました。

Julia入門
https://www.hello-statisticians.com/julia

Julia 1.8 Documentation
https://docs.julialang.org/en/v1/

タプル

タプルの生成

タプルは複数の変数などをまとめるオブジェクトで、(1,2,3)のように括弧を用いて下記のように表記します。

t = (1, 2, 3)
println(t)

・実行結果

(1, 2, 3)

タプルの型の確認や要素の取得は下記のように行うことができます。

println(t[1])
println(typeof(t))
println(typeof(t[1]))

・実行結果

1
Tuple{Int64, Int64, Int64}
Int64

タプルでは下記のように値の変更ができないことに注意が必要です。

t = (1,2,3)
t[1] = 2

・実行結果

MethodError: no method matching setindex!(::Tuple{Int64, Int64, Int64}, ::Int64, ::Int64)

タプルの活用

配列のサイズを確認する際に用いるsize関数の出力はタプルであることを確認しておくと良いです。

array = rand(3,2)
println(size(array))
println(typeof(size(array)))

・実行結果

(3, 2)
Tuple{Int64, Int64}

また、関数の可変長引数は下記のようにTuple型のオブジェクトで与えられることも抑えておくと良いです。

f(x...) = x
println(f(1,2,3))
println(typeof(f(1,2,3)))

・実行結果

(1, 2, 3)
Tuple{Int64, Int64, Int64}

名前付きタプル

名前付きタプルは各要素に名前を付けることができるタプルです。名前付きタプルは元々NamedTuples.jlパッケージで開発されていましたが、Julia 0.7から標準ライブラリに組み込まれました。名前付きタプルは下記のように用いることができます。

t = (a=1, b=2, c=3)
println(t)
println(t.a)

・実行結果

(a = 1, b = 2, c = 3)
1

名前付きタプルは下記のように値を取得することもできます。

t = (a=1, b=2, c=3)
println(t[2])
println(t[:c])

・実行結果

2
3

また、名前付きタプルのキーと値は下記のようにkeys関数やvalues関数を用いて取得できることも抑えておくと良いです。

t = (a=1, b=2, c=3)
println(keys(t))
println(values(t))

・実行結果

(:a, :b, :c)
(1, 2, 3)

参考

Julia 1.8 Documentation
https://docs.julialang.org/en/v1/