首页 > 解决方案 > 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)

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

标签: julia

解决方案


您的代码有两个问题:

  • 在第一次迭代中,您尝试在该数组仍然为空(有长度)时访问n_minus_1索引处的数组- 这会引发错误;10
  • 在 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)

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

n_minus_1 = sample_size_array .- 1

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


推荐阅读