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

如何利用Seq.fill结合已有Seq[Int]生成Seq[Seq[Int]]?

解决Scala中用Seq.fill生成嵌套序列的问题

我明白你的需求啦——你想用已有的Seq[Int]实例,通过Seq.fill生成一个嵌套的序列结构,但因为fill的第二个参数要求是单个元素而非序列,所以直接传_random_values行不通。别担心,咱们用遍历的方式就能搞定!

核心思路

你需要遍历_random_values里的每一个整数,对每个整数单独调用Seq.fill,生成对应的子序列,最后把这些子序列收集起来,就能得到你想要的嵌套结构。

具体实现

场景1:生成Seq[Seq[Int]](每个源整数对应一个一维序列)

如果你的目标是把_random_values里的每个整数,都生成一个长度为width的一维序列,最终得到一个二维序列,代码可以这么写:

// 假设width是你定义的目标长度
val result: Seq[Seq[Int]] = _random_values.map(num => Seq.fill(width)(num))

或者用更易读的for推导式:

val result: Seq[Seq[Int]] = for {
  num <- _random_values
} yield Seq.fill(width)(num)

场景2:生成Seq[Seq[Seq[Int]]](每个源整数对应一个二维序列)

如果你原本想的是每个整数生成一个width×width的二维序列(也就是三维结构),只需要调整fill的参数即可:

val result: Seq[Seq[Seq[Int]]] = _random_values.map(num => Seq.fill(width, width)(num))

为什么原来的代码不行?

Seq.fill(n1, n2)(elem)的elem参数要求是单个元素的生成逻辑(可以是一个固定值,也可以是返回单个元素的函数),而你直接传入_random_values(一个序列)不符合参数类型要求。通过map遍历每个元素,就能让每个整数都作为fill的元素参数,完美适配方法的要求。

内容的提问来源于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.15 08:05:02