迭代列表并添加另一个列表SCALA

时间:2016-08-29 15:13:44

标签: list scala

我有一个这样的列表:

val list = List(("A", List("B", "C")),("B", List("A", "C", "D")))

我想返回一个像这样的列表

newlist = List(("A","B",List("B","C")),("A","C",List("B","C")),("B","A",List("A", "C", "D")),("B","C",List("A", "C", "D")),("B","D",List("A", "C", "D")))

我如何使用map执行此操作?我如何使用for

1 个答案:

答案 0 :(得分:2)

这似乎是你所追求的。

val lst = List(("A", List("B", "C")),("B", List("A", "C", "D")))
lst.flatMap{case (s,l) => l.map((s,_,l))}
res0: List[(String, String, List[String])] = List((A,B,List(B, C)), (A,C,List(B, C)), (B,A,List(A, C, D)), (B,C,List(A, C, D)), (B,D,List(A, C, D)))

作为for理解,它可能看起来像这样。

for {
  t <- lst              //for every tuple from lst
  s <- t._2             //for every string from tuple's 2nd element
} yield (t._1, s, t._2) //create new tuple (triple)