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

如何在Scala中生成指定类型的可变单位矩阵(禁用zipWithIndex)

实现Scala可变单位矩阵(无zipWithIndex)

嘿,这事儿好办!我给你两种不用zipWithIndex的实现方式,都能生成你要的mutable.Seq[mutable.Seq[Double]]类型单位矩阵,完全避开你之前遇到的IndexedSeq问题。

方法一:基础循环实现

这种方式逻辑直白,一步步构建矩阵:

import scala.collection.mutable

def createIdentityMatrix(size: Int): mutable.Seq[mutable.Seq[Double]] = {
  // 初始化空的可变矩阵
  val matrix = mutable.ArrayBuffer.empty[mutable.Seq[Double]]
  
  // 遍历每一行索引
  for (i <- 0 until size) {
    // 创建一行全0的可变序列
    val row = mutable.ArrayBuffer.fill(size)(0.0)
    // 将当前行的对角位置设为1.0
    row(i) = 1.0
    // 把该行加入矩阵
    matrix += row
  }
  
  matrix
}

方法二:结合map的简洁实现

如果喜欢更函数式一点的写法,可以用map来生成每一行:

import scala.collection.mutable

def createIdentityMatrix(size: Int): mutable.Seq[mutable.Seq[Double]] = {
  // 遍历行索引,生成每一行后转成可变矩阵
  (0 until size).map { i =>
    val row = mutable.ArrayBuffer.fill(size)(0.0)
    row(i) = 1.0
    row
  }.to(mutable.ArrayBuffer)
}

关键说明

  • 这里用ArrayBuffer是因为它是mutable.Seq的实现类,完全符合你要求的类型
  • 两种方式都没有用到zipWithIndex,彻底避开了你之前遇到的IndexedSeq相关问题
  • 生成的矩阵和每一行都是可变的,你可以后续随时修改元素值

内容的提问来源于stack exchange,提问作者JarsOfJam-Scheduler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:21:18