Я бы также прокомментировал другие подходы.
Первые два прохода Matrix
по столбцам, а не по ряду:
julia> a[:]
4-element Array{Tuple{Int64,Int64},1}:
(1, 2)
(3, 4)
(2, 3)
(4, 5)
, который копирует данные и:
julia> vec(a)
4-element Array{Tuple{Int64,Int64},1}:
(1, 2)
(3, 4)
(2, 3)
(4, 5)
которая делится базовыми данными с a
. Вот следствие:
julia> b = vec(a)
4-element Array{Tuple{Int64,Int64},1}:
(1, 2)
(3, 4)
(2, 3)
(4, 5)
julia> b[1] = (100, 100)
(100, 100)
julia> b
4-element Array{Tuple{Int64,Int64},1}:
(100, 100)
(3, 4)
(2, 3)
(4, 5)
julia> a
2×2 Array{Tuple{Int64,Int64},2}:
(100, 100) (2, 3)
(3, 4) (4, 5)
Вы можете использовать явное понимание, которое позволяет вам сделать это обоими способами:
julia> [a[i,j] for j in axes(a, 2) for i in axes(a, 1)]
4-element Array{Tuple{Int64,Int64},1}:
(1, 2)
(3, 4)
(2, 3)
(4, 5)
julia> [a[i,j] for i in axes(a, 1) for j in axes(a, 2)]
4-element Array{Tuple{Int64,Int64},1}:
(1, 2)
(2, 3)
(3, 4)
(4, 5)
Наконец, вы можете использовать vcat
, опять же в обоих направлениях:
julia> reduce(vcat, eachrow(a))
4-element Array{Tuple{Int64,Int64},1}:
(1, 2)
(2, 3)
(3, 4)
(4, 5)
julia> reduce(vcat, eachcol(a))
4-element Array{Tuple{Int64,Int64},1}:
(1, 2)
(3, 4)
(2, 3)
(4, 5)