3-數據類型
- 變數
Julia中的變數有特色的一個地方就是可以Unicode字元作為變數名。
如下圖所示。
此外,還可以用希臘字元進行運算。alpha然後敲Tab鍵就可以出現 α。 β也類似處理。- 數據類型
數據類型:String、Number(還需要細分)、Char和Bool
String就是字元型數據,這個會有一系列的函數對字元串進行處理。因為在實際數據分析中,對字元的處理能力會影響到該語言(工具)的數據分析能力。R語言自身已經具備字元處理能力,但是還是加了stringi和stringr兩大利器。這裡暫時不展開字元的處理。
Number表示數字型數據。這個就有點複雜了。從Julia手冊來看,可以包括:
Bool,Int8,UInt8,Int16,UInt16,Int32,UInt32,Int64,UInt64,Int128,UInt128,Float16,Float32,Float64,Complex64,Complex128。
一般在64位平台上,整數和浮點數都是默認64。具體如下圖所示。
Char類型數據如下。
Bool是布爾邏輯值。- 數據結構
其實,這個也還可以說是類型。
主要有Arrays、Tuples、Dictionary、Set等
Arrays數組
可以衍生出向量和矩陣,然後一堆複雜的應用就可以展開了。這個暫時不展開。
# 空(零元素)數組na = []na = Int64[]n# 生成一個數組nInt64[1,2,3,4,5]n# 數組內部元素可以不同類型n[10, "foo", false]nn# 特殊數組nzeros(3)n# 3-element Array{Float64,1}:n# 0.0n# 0.0n# 0.0nnzeros(Int64,3)n# 3-element Array{Int64,1}:n# 0n# 0n# 0nnones(3)n# 3-element Array{Float64,1}:n# 1.0n# 1.0n# 1.0nnn# column vector列向量(向量容器,1維數組):na = [1;2;3]na=[1,2,3]n# 3-element Array{Int64,1}:n# 1n# 2n# 3ntypeof(a) n#Array{Int64,1}nn# row vector行向量(Matrix容器,2維數組)na = [1 2 3]n# 1×3 Array{Int64,2}:n# 1 2 3ntypeof(a) n#Array{Int64,2}n
Arrary具體可以展開為Vector和Matrix。這個在Atom中可以看得更清楚。
除了上述之外,數組還有特殊的Range,用來循環。
range(1,10)n1:10ntypeof(range(1,10)) n#UnitRange{Int64}n
可以使用collect來展開range生成的序列。
Tuples元組
# 使用元組列出不可變元素na = (1,2,3)n甚至沒有括弧nb = 1,2,3ntypeof(b) #Tuplenn元組可以收集返回多個值的函數的值)na=(1,2,3)nb=(4,5,6)nv1,v2=(a,b)nv1nv2n
Dictionary字典
# 可以創建一個空(零元素)字典ndict = Dict()n# 或使用值初始化字典ndict = Dict(a=>1, b=>2, c=>3)ntypeof(dict) # Dictn# 查找值ndict[a]n# 全部的鍵nkeys(dict)n# 全部的值nvalues(dict)nn添加對字典:dict[akey] = avalue 使用map添加對:ndict=Dict()nmap((i,j) -> dict[i]=j, [1,2,3], [10,20,30])n
Set集合
使用集合來表示無序,唯一值的集合。
# 空(零元素)集:na = Set()nn# 使用值初始化一個集合:na = Set([1,2,2,3,4])nn集運算nset1=Set([1,2,3,4])nset2=Set([2,3,4,5]) #Set([4,2,3,5])nintersect(set1,set2) #Set([4,2,3])nunion(set1,set2) #Set([4,2,3,5,1])nsetdiff(set1,set2) #Set([1])n
以上只是簡要介紹,並未展開。
推薦閱讀:
※為科學研究學習Julia是否有價值?
※搞數值計算的,julia, OCamal, Python怎麼選?
※Matlab傳值調用會導致效率低多少?