You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中如何使用for循环填充空嵌套向量(向量的向量)

问题说明

已知目标嵌套向量b、已赋值嵌套向量a定义如下:

b=[ [1,[2,3,7]], 
    [2,[7,2,7]],
    [3,[2,3,9]] ]

a=[ [2,3,7],[7,2,7],[2,3,9] ] 

要求从空嵌套向量(元素为向量的向量)出发,通过for循环构造得到目标b,现有错误实现代码无法运行:

b=[ [ ] ]
for i in 1:3
    b[i][1]=i
    b[i][2]=a[i]
end
原代码问题点
  • 外层b初始化时仅包含1个空内层向量,长度为1,循环执行到i=2、i=3时访问b[2]、b[3]会触发索引越界错误
  • 空向量不存在索引为1、2的元素,直接对不存在的索引位赋值会触发报错
正确实现

方式1:逐次追加元素(最简洁)

初始化外层为空向量,每次循环构造好当前内层的[i, a[i]],直接追加到外层向量即可:

b = []
for i in 1:3
    push!(b, [i, a[i]])
end

运行后得到的b与目标定义完全一致。

方式2:预分配外层长度后按索引赋值

如果需要按索引位赋值而非追加,先初始化长度为3的外层向量,每个位置预置空向量,再向内层追加元素:

# 注意不要写b = [[]]*3,会导致三个内层向量指向同一块内存,修改时全部联动
b = [[] for _ in 1:3]
for i in 1:3
    push!(b[i], i)
    push!(b[i], a[i])
end

运行结果同样符合要求。

内容的提问来源于stack exchange,提问作者A. T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:24:31