朱莉娅:追加到一个数组

N6D*_*DYN 4 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)
Run Code Online (Sandbox Code Playgroud)

如果 Julia 不明白array[0]为什么我从 0 开始而不是从 1 开始?

Bog*_*ski 9

您的代码有两个问题:

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

要解决这两个问题,请使用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)
Run Code Online (Sandbox Code Playgroud)

然而,在这种情况下,整个操作可以写得更简单:

n_minus_1 = sample_size_array .- 1
Run Code Online (Sandbox Code Playgroud)

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