根据您的需求,您可以使用Vector{Vector{T}}
(类似于Python的列表嵌套)代替Matrix
(Array{T,2}
)。这取决于您要做什么。
在v0.5+
版本中,只需使用[ , ]
即可实现:
julia> VERSION
v"0.5.0-dev+4440"
julia> a = [[1, 2], [3, 4]]
2-element Array{Array{Int64,1},1}:
[1, 2]
[3, 4]
julia> a = [[1, 2]; [3, 4]]
4-element Array{Int64,1}:
1
2
3
4
julia> row1, row2 = a;
julia> (row1, row2)
(2-element Array{Int64,1}:
1
2,2-element Array{Int64,1}:
3
4)
在
v0.4+
版本中,您需要将数组作为数组的数组输入,就像这样:
julia> VERSION
v"0.4.5"
julia> a = Vector[[1, 2], [3, 4]]
2-element Array{Array{T,1},1}:
[1,2]
[3,4]
julia> b = [[1, 2]; [3, 4]]
4-element Array{Int64,1}:
1
2
3
4
julia> c = [[1, 2], [3, 4]]
WARNING: [a,b] concatenation is deprecated; use [a;b] instead
in depwarn at deprecated.jl:73
in oldstyle_vcat_warning at abstractarray.jl:29
in vect at abstractarray.jl:32
while loading no file, in expression starting on line 0
4-element Array{Int64,1}:
1
2
3
4
julia> row1, row2 = a;
julia> row1, row2
([1,2],[3,4])
row1, row2 = a
,所以我将接受这个答案。 - mariusrow1, row2 = a
并不会复制任何东西,据我所知:julia> a = [[1, 2], [3, 4]]; row1, row2 = a; row1[1] = 7; @assert a[1] == [7, 2]
与>>> a = [[1, 2], [3, 4]]; row1, row2 = a; row1[0] = 7; assert a[0] == [7, 2]
,实际上是同一个数组/列表(相同的id/对象),我更担心性能问题,但有时候人们确实想要数组的数组而不是矩阵作为数据结构,这完全取决于具体情况。 - HarmonicaMuse