や、言語関係など覚えたいもの、覚えるべきものはたくさんある一方で、注目が集まっているから、やってみたい。ということでプログラミング言語としてのを学んでいく。
前回
2. Juliaの言語機能
2.5 コレクション
ではなどと同様に基本的なコレクションが標準ライブラリとして用意されている。またパッケージには有用なデータ構造が提供されている。
では慣用的に関数名の最後に!を付与したものは引数のすべてまたは一部を変更もしくは破棄することを意味する。なコレクションでは、コレクションに要素を追加したり削除したりする機能が提供されているため、それらを行なう関数名の末尾には!が付与される。
2.5.1 タプル
タプルは複数のオブジェクトをまとめるデータ構造で括弧()で表記する。任意の数の型パラメータを持つ。タプルはたとえば型のサイズを表現するのに用いる。
タプルの各要素にはから始まるインデックスによってアクセスする。タプルは型で、値の変更はできない。
# タプル t = (1,2,3) # インデックス(1ではじまる数字)で各要素にアクセス println(t[1]) # タプルは後から値を変更できない try t[1] = 4 catch "タプルは値を変更できません。" end
# Array型のサイズ表現にタプルを用いる array = rand(4,3) println(array) println(size(array)) # サイズ # 関数の可変長引数はTuple型のオブジェクト f(x...) = x y = f(1,2,3) println(y) println(typeof(y))
2.5.2 名前付きタプル
各要素に名前を付けることのできるタプルを名前付きタプル(named tuple)という。
###################### ### 名前付きタプル ### ###################### tuple1 = (a = 1, b = 2,c = 3) println(tuple1) # key()とvalues()でキーと値それぞれにアクセスできる println(keys(tuple1)) println(values(tuple1)) # インデックスでも名前でも各要素にアクセスできる println(tuple1.a) println(tuple1[1])
2.5.3 リスト
にはなどと同じリストを持つ。では1次元の型をリストとして用いる。値の追加や削除にはや、、などを用いる。
リストは[]で定義する。
list = [] list = [1, 2] # 末尾に要素を加える push!(list,3) # 末尾の要素を取り出す pop!(list) # すべての要素を出す list # i番目に要素を挿入する insert!(list,2,4) # 2番目の引数に挿入したい番号iを与え、3番目に挿入したい値を入れた # i番目の要素を削除する deleteat(list,1) #2番目の引数に与えたインデックスの値を削除する
2.5.4 辞書
辞書はキーと値のペアを格納するコレクションである。キーは重複が許されない。
の辞書は型でキーと値に関する2つの型パラメータを持つ。
############ ### 辞書 ### ############ d = Dict{String,Int64}() # 辞書の定義 d["a"] = 1; d["b"] = 2 println(d) ### 値にアクセス println(d["a"]) try println(d["c"]) catch println("cはないです") end ### ある値がキーにあるかを判定 println(haskey(d, "a")) # あればtrue println(haskey(d, "c")) # なければfalse
2.5.5 集合
集合はキーのみを保持する辞書である。データからユニークな要素だけを取り出したりその数を数えたりする際に用いる。
# 集合の定義 s = Set([1,2]) # println(typeof(s)) # 値の追加 println(push!(s,3)) # 和集合 println(union(s, [3, 4])) # 積集合 println(intersect(s,[1,9])) # 部分集合になっているか判定 issubset([1,2],[1,2,3]) [1,2]⊆[1,2,3] # 上と同じ \subseteq
2.5.6 コレクション共通の関数
関数 |
概要 |
|
コレクションがからかどうかを返す | ||
コレクションを空にする | ||
コレクションの要素数 | ||
コレクションの型パラメータ |