Tuples

Julia 中級

Anthony Markham

Quantitative Developer

Tuples - 介紹

  • 不可變、具順序的值集合。
  • 可包含任意資料型別的值。
  • 與向量一樣以整數索引。
Julia 中級

Tuples - 為什麼?

優點

  • 需要保護的資料用 tuple 更安全。
  • 比向量更快且更省記憶體。

缺點

  • 無法排序 tuple。
  • 無法新增、刪除或更改值。
Julia 中級

Tuples - 語法

  • 使用小括號定義 tuple,值以逗號分隔。
my_tuple = (10, 20, 30, 40)
  • 一個 tuple 可含多種資料型別。
my_mixed_tuple = (10, "Hello", 30, true)
Julia 中級

Tuples - 索引

  • Tuple 以整數索引(與向量相同)。
my_tuple = (10, 20, 30, 40)
println(my_tuple[1])
10
println(my_tuple[2:3])
(20, 30)
Julia 中級

Tuples - 不可變性

  • 建立後就不能對 tuple 新增或移除值。
  • 也不能修改 tuple 內的值。
my_tuple = (10, 20, 30, 40, 50)
append!(my_tuple, 60)
MethodError: no method matching append!(::NTuple{5, Int64}, ::Int64)
my_tuple = (10, 20, 30, 40, 50)
my_tuple[1] = 15
MethodError: no method matching setindex!(::NTuple{5, Int64}, ::Int64, ::Int64)
Julia 中級

Tuples - 不可變性

  • Tuple 會記錄其元素數量,因為這不會改變。
  • 這反映在變數的型別上。
my_vector = [10, 20, 30, 40, 50]
my_tuple = (10, 20, 30, 40, 50)

println(typeof(my_vector))
println(typeof(my_tuple))
Vector{Int64}
NTuple{5, Int64}
Julia 中級

Tuples - NamedTuple

  • NamedTuple 是 tuple,但元素也可用為該值指定的名稱存取。
  • NamedTuple 中每個值都有唯一名稱。
  • NamedTuple 與 tuple 具有相同的不可變性。
my_named_tuple = (name="Anthony", country="Australia", city="Sydney")
println(my_named_tuple[1])
println(my_named_tuple.name)
Anthony
Anthony
Julia 中級

一起來練習吧!

Julia 中級

Preparing Video For Download...