我想以循环方式访问数组中的元素。通常,取模就足够了,但是在Julia数组中,从1开始。目前,我基本上是将索引转换为基于0的索引,然后再转换回来。但这不适用于负索引。
A = 1:5
for i in -6:6
println(i, " -> ", ((i - 1) % length(A)) + 1)
end
输出
-6 -> -1 # wrong
-5 -> 0 # wrong
-4 -> 1 # wrong
-3 -> -3 # wrong
-2 -> -2 # wrong
-1 -> -1 # wrong
0 -> 0 # wrong
1 -> 1
2 -> 2
3 -> 3
4 -> 4
5 -> 5
6 -> 1
最佳答案
我通常为此使用mod1
函数。这是一个例子:
julia> [-10:10 mod1.(-10:10, 5)]
21×2 Array{Int64,2}:
-10 5
-9 1
-8 2
-7 3
-6 4
-5 5
-4 1
-3 2
-2 3
-1 4
0 5
1 1
2 2
3 3
4 4
5 5
6 1
7 2
8 3
9 4
10 5
关于arrays - 如何在Julia中索引循环数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59435965/