Julia Core.Tuple

Julia 言語のタプル (Core.Tuple) は、順序と名前を持たないコレクションです。配列や集合など他のコレクションとの違いや、タプルの使い方をご紹介します。

目次

  1. コレクション
  2. タプルの作成
  3. 要素の参照
  4. イテレーション
  5. 値の変更
  6. 値の追加
  7. 値の交換
  8. Core.tuple
  9. Core.typeof
  10. Base.collect
  11. Base.empty!
  12. Base.findall
  13. Base.isempty
  14. Base.length
  15. Base.sort
  16. Base.sum
  17. 参考文献

1 コレクション

Core.Tuple はコレクションの一種である。Julia 言語には、以下に示すコレクションがある。

Juliaのコレクション
コレクション 順序 名前 値の重複 要素の追加・変更
Core.Array
Core.NamedTuple
Core.Tuple
Base.Dict
Base.Matrix
Base.Set
Base.Vector

Core.Tuple は以下に示す特徴を持つ。

上記の特徴を持つコレクションは、一般的に「タプル」と呼ばれる。

2 タプルの作成

タプルの生成方法を以下に示す。

julia> x = (1, 2.0, "foo")
(1, 2.0, "foo")

3 要素の参照

Core.Tuple の値は、1 から始まる番号を指定して参照できる。

julia> x = (1, 2.0, "foo")
(1, 2.0, "foo")

julia> x[1]
1

julia> for i = 1:3
         println(x[i])
       end
1
2.0
foo

4 イテレーション

Core.Tuple は先頭から順に値を取り出すことができる。

julia> x = (1, 2.0, "foo")
(1, 2.0, "foo")

julia> for i in x
       println(i)
     end
1
2.0
foo

タプルには順序性があるので、常に上記の順番で値を取り出せる。

5 値の変更

タプルの値を変更することはできない。

julia> x = (1, 2)
(1, 2)

julia> x[1] = 0
ERROR: MethodError: no method matching setindex!(::Tuple{Int64, Int64}, ::Int64, ::Int64)

6 値の追加

タプルに値を追加することはできない。

julia> x = (1, 2)
(1, 2)

julia> x[3] = 3
ERROR: MethodError: no method matching setindex!(::Tuple{Int64, Int64}, ::Int64, ::Int64)

7 値の交換

タプルを使って、2つの値を交換できる。

julia> x = 1
1

julia> y = 2
2

julia> x,y = y,x
(2, 1)

julia> x
2

julia> y
1

同様にして、3つ以上の値を交換することもできる。

8 Core.tuple

Core.tuple 関数を使ってタプルを生成することができる。

julia> t = tuple(1, 2, 3)
(1, 2, 3)

9 Core.typeof

Core.typeof 関数を使って、タプル内の要素の型を確認できる。

julia> x = (1, 2.0, "foo")
(1, 2.0, "foo")

julia> typeof(x)
Tuple{Int64,Float64,String}

10 Base.collect

Base.collect メソッドを使って、Core.Tuple を Base.Vector へ変換することができる。

julia> t = (1, 2, 3)
(1, 2, 3)

julia> v = collect(t)
3-element Vector{Int64}:
 1
 2
 3

11 Base.empty!

Base.empty! 関数を使って、タプルの要素を空にすることはできない。

julia> x = (1, 2, 3)
(1, 2, 3)

julia> empty!(x)
ERROR: MethodError: no method matching empty!(::Tuple{Int64, Int64, Int64})

12 Base.findall

Base.findall メソッドを使うことで、Core.Tuple に含まれる true の要素だけを抽出することができる。

julia> t = (true, false, true)
(true, false, true)

julia> findall(t)
2-element Vector{Int64}:
 1
 3

Base.findall メソッドを使うことで、Core.Tuple に含まれる要素のうち、引数に渡した関数の戻り値が true になる要素だけを抽出することができる。

julia> t = (5, 6, 7, 8)
(5, 6, 7, 8)

julia> findall(isodd, t)
2-element Vector{Int64}:
 1
 3

julia> findall(iseven, t)
2-element Vector{Int64}:
 2
 4

13 Base.isempty

Base.isempty 関数を使って、タプルが空かどうかを確認できる。

julia> x = (1)
1

julia> isempty(x)
false

julia> x = ()
()

julia> isempty(x)
true

14 Base.length

Base.length 関数を使って、タプルの要素数を確認できる。

julia> x = (1, 2.0, "foo")
(1, 2.0, "foo")

julia> length(x)
3

15 Base.sort

Base.sort 関数を使って、Core.Tuple をソート(並び替え)することはできない。

julia> t = (3,2,1)
(3, 2, 1)

julia> sort(t)
ERROR: MethodError: no method matching sort(::Tuple{Int64, Int64, Int64})

16 Base.sum

Base.sum 関数を使って、Core.Tuple 各要素の合計値を求めることができる。

julia> sum((1, 2, 3))
6

17 参考文献

JuliaLang.org contributors 2023. Julia Documentation