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

Scala中嵌套列表的元素交叉分布实现需求咨询

实现嵌套列表的笛卡尔积组合

嘿,你要的其实就是两个列表的笛卡尔积(Cartesian Product)操作嘛——把list1里的每个子列表和list2里的每个子列表逐一配对,生成包含这两个子列表的新列表。我用Scala给你写个具体实现,毕竟你的列表结构看起来是Scala风格的:

步骤1:定义原始列表

首先先把你给出的list1和list2明确下来:

val list1 = List(List("n1", "n3"), List("n1", "n4"), List("n3", "n4"))
val list2 = List(List("n2"), List("n3"), List("n4"))

步骤2:计算笛卡尔积

你可以用Scala的for推导式来实现,写法直观易懂:

val result = for {
  subListFromList1 <- list1
  subListFromList2 <- list2
} yield List(subListFromList1, subListFromList2)

如果你更喜欢用高阶函数链式调用,也可以用flatMap+map的组合:

val result = list1.flatMap(sub1 => list2.map(sub2 => List(sub1, sub2)))

结果验证

运行上面的代码后,result就是你想要的结构:

List(
  List(List("n1", "n3"), List("n2")),
  List(List("n1", "n4"), List("n2")),
  List(List("n3", "n4"), List("n2")),
  List(List("n1", "n3"), List("n3")),
  List(List("n1", "n4"), List("n3")),
  List(List("n3", "n4"), List("n3")),
  List(List("n1", "n3"), List("n4")),
  List(List("n1", "n4"), List("n4")),
  List(List("n3", "n4"), List("n4"))
)

简单解释下逻辑:不管用for推导式还是高阶函数,核心都是遍历list1的每一个子列表,再针对每个子列表遍历list2的所有子列表,把每一对子列表包装成一个新的列表,最终收集所有这样的组合就完成了。

内容的提问来源于stack exchange,提问作者Pedro Gonçalves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:03