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

如何向空[[Double]]矩阵内不存在的子vector追加元素

方案1:扩展Array实现自动补全缺失行的便捷追加(推荐)

你可以给二维Double数组加一个自定义扩展,调用时自动判断目标行是否存在,不存在就先创建足够的空行再执行追加:

extension Array where Element == [Double] {
    mutating func appendElement(_ element: Double, toRow row: Int) {
        // 目标行索引超过当前数组长度时,补全空行
        while row >= self.count {
            self.append([])
        }
        // 往目标行追加元素
        self[row].append(element)
    }
}

使用方式完全适配你的使用场景:

var matrix: [[Double]] = []

// 填充第一列(所有行的第0个元素)
matrix.appendElement(1.0, toRow: 0) // 自动创建第0行,追加后matrix[0] = [1.0]
matrix.appendElement(2.0, toRow: 1) // 自动创建第1行,追加后matrix[1] = [2.0]
matrix.appendElement(3.0, toRow: 2) // 自动创建第2行,追加后matrix[2] = [3.0]
matrix.appendElement(4.0, toRow: 3) // 自动创建第3行,追加后matrix[3] = [4.0]
matrix.appendElement(5.0, toRow: 4) // 自动创建第4行,追加后matrix[4] = [5.0]

// 后续填充第二列(所有行的第1个元素)
matrix.appendElement(6.0, toRow: 0) // 第0行已存在,直接追加,matrix[0] = [1.0, 6.0]
matrix.appendElement(7.0, toRow: 1) // 第1行已存在,直接追加,matrix[1] = [2.0, 7.0]
matrix.appendElement(8.0, toRow: 2) // 第2行已存在,直接追加,matrix[2] = [3.0, 8.0]
matrix.appendElement(9.0, toRow: 3) // 第3行已存在,直接追加,matrix[3] = [4.0, 9.0]

方案2:单次判断逻辑(不需要扩展的情况)

如果不想写全局扩展,也可以每次追加前单独做判断:

let targetRow = 0
let value = 1.0

if targetRow >= matrix.count {
    // 补全从当前长度到目标行的所有空行
    for _ in matrix.count...targetRow {
        matrix.append([])
    }
}
matrix[targetRow].append(value)

边界说明

如果你的填充场景里行索引不会连续增长(比如可能直接跳到第10行插入),上面的逻辑依然适用,会自动补全中间缺失的空行,不会出现索引越界问题。

内容的提问来源于stack exchange,提问作者Daniel Ardel-Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:57:03