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

Scala二维列表处理实现:按列拼接为|分隔的指定格式输出

Scala二维列表按列提取拼接实现方案

核心逻辑是先对存储了多维度属性的二维列表做转置,将原本按「属性类型分行存储」的结构,转换为「单条人员信息分行存储」的结构,再对每行元素用|分隔拼接即可。

标准实现(使用Scala内置API)

Scala标准库的List已经提供了transpose方法直接完成矩阵转置操作,配合mkString就能快速实现需求:

// 输入数据,注意Scala中字符串需使用双引号包裹
val source = List(
  List("John", "Will", "Steven"),
  List(25, 28, 34),
  List("M", "M", "M")
)

// 转置后逐行用|拼接
val res = source.transpose.map(_.mkString("|"))

// 逐行打印即可得到目标输出
res.foreach(println)

运行后输出完全匹配要求:

John|25|M
Will|28|M
Steven|34|M

注意事项

  • 使用transpose要求所有子列表长度一致,否则会抛出运行时异常,生产环境使用前建议先校验所有子列表长度相等
  • mkString(分隔符)是Scala集合提供的通用拼接方法,会自动把集合内元素按指定分隔符拼接为字符串,无需手动遍历拼接

手动实现转置(不依赖内置API)

如果需要自定义转置逻辑(比如兼容子列表长度不一致的场景),可以参考如下实现:

def customTranspose[T](data: List[List[T]]): List[List[T]] = {
  val columnCount = data.headOption.map(_.length).getOrElse(0)
  (0 until columnCount).map(col => data.map(row => row(col))).toList
}

// 调用方式和内置API一致
val customRes = customTranspose(source).map(_.mkString("|"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:33:17