我有一个这样的列表:
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
?
答案 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)