【问题标题】:N to N matching in scalascala中的N到N匹配
【发布时间】:2015-09-10 08:39:06
【问题描述】:

我有两个列表,分别是

val a = List(1,2,3)

val b = List(4,5)

我想执行 N 到 N 二分映射并希望得到输出

List((1,4),(1,5),(2,4),(2,5),(3,4),(3,5))

我该怎么做?

【问题讨论】:

  • B 是一个列表还是一对?为什么你希望输出是一个元组而不是一个列表?
  • 值按惯例用小写名称标记。
  • B 是一个列表。我正在尝试为两个嵌套的“foreach”操作寻找替代方案。
  • 仅供参考,您要查找的是两个列表的笛卡尔积
  • Cross product in Scala 的可能重复项

标签: scala


【解决方案1】:

假设 B = List(4,5),那么您可以使用 for 理解来实现您的目标:

val A = List(1,2,3)
val B = List(4,5)

val result = for(a <- A; b <- B) yield {
  (a, b)
}

输出是

result:List[(Int, Int)] = List((1,4), (1,5), (2,4), (2,5), (3,4), (3,5))

【讨论】:

  • 很高兴我能帮上忙 :-)
【解决方案2】:

同时考虑

a.flatMap(x => b.map(y => (x,y)))

虽然不如 for 理解那么简洁。

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 2013-12-02
    • 1970-01-01
    • 2016-01-08
    • 2010-10-15
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多