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

Julia中向数组推入元素:无法创建维度可变的内部数组

问题分析与解决方案

核心问题

你遇到的所有内部数组大小相同的问题,根源在于**edge_weights_array的初始化方式错误**:

edge_weights = Int[];
edge_weights_array = [edge_weights for _ in 1:199];

这里你只是把同一个空数组edge_weights的引用重复存入了数组199次,所有元素本质上指向同一个内存地址的数组。因此无论你通过哪个索引push!元素,都会修改同一个底层数组,最终所有内部数组的大小自然完全一致。

修正方案

将edge_weights_array的初始化代码改成:

edge_weights_array = [Int[] for _ in 1:199];

这样每次循环都会创建一个全新的空Int数组,数组中的每个元素都是独立的内存对象。后续通过zip遍历并push!(graph[2], w)时,只会修改当前对应的那个内部数组,实现每个子数组大小可变的需求。

补充说明

  • zip的用法没有问题,它正确关联了graph_array、edge_weights_array和graph_base_table_array中的对应元素。
  • push!的用法也没有错误,问题完全出在数组初始化时的引用复用。

内容的提问来源于stack exchange,提问作者KeynesCoeFen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:07