朱莉娅:追加到数组

时间:2018-08-11 22:01:18

标签: julia

请有人帮助我理解这一点。我下面有以下代码。我试图将index[i]-1附加到一个空数组。但是我收到此错误:“ BoundsError: attempt to access 0-element Array{Any,1} at index [1]”:

sample_size_array = [9,5,6,9,2,6,9]
n_minus_1 = []
array_length = length(sample_size_array)
for i in 1:array_length
    n_minus_1[i].append(sample_size_array[i] -1)
end
println(n_minus_1)

如果茱莉亚不了解array[0],那为什么我从0开始而不是从1开始?

1 个答案:

答案 0 :(得分:3)

您的代码有两个问题:

  • 在第一次迭代中,您尝试访问索引为n_minus_1的{​​{1}}数组,而该数组仍为空(长度为1)-这会引发错误;
  • 在Julia中,您不会使用0调用方法(此符号用于不同的目的-在这种情况下,它被解析为字段访问,并且稍后也会引发错误)

要解决这两个问题,请使用.函数,该函数在数组的末尾附加一个元素。代码看起来像这样:

push!

但是在这种情况下,整个操作可以更简单地写为:

sample_size_array = [9,5,6,9,2,6,9]
n_minus_1 = []
array_length = length(sample_size_array)
for i in 1:array_length
    push!(n_minus_1, sample_size_array[i]-1)
end
println(n_minus_1)

,您不需要任何循环(在这里您会在Julia中看到n_minus_1 = sample_size_array .- 1 的另一种用法-在这种情况下,我们用它来表示要从{{的每个元素中减去. 1}})。