给定一个向量z = [1, 2, 3],我想创建一个具有z(ie zp = [[1,2,3], [3,1,2], [2,3,1]])的所有循环排列的向量向量.
我可以打印的所有元素zp与
for i in 1:length(z)
push!(z, shift!(z)) |> println
end
Run Code Online (Sandbox Code Playgroud)
如何存储结果排列?注意
zp = Vector(length(z))
for i in 1:length(z)
push!(z, shift!(z))
push!(zp, z)
end
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它存储相同的向量z3次zp.
一种方法是在推送之前复制矢量:
z = [1, 2, 3];
zp = Vector();
for i in 1:length(z)
push!(z, shift!(z))
push!(zp, copy(z))
end
Run Code Online (Sandbox Code Playgroud)
给我
julia> zp
3-element Array{Any,1}:
[2,3,1]
[3,1,2]
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
但我倾向于在可能时避免变异操作.所以我会把它写成
julia> zp = [circshift(z, i) for i=1:length(z)]
3-element Array{Array{Int64,1},1}:
[3,1,2]
[2,3,1]
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |