2016-08-29 19 views
-2

項目に別のリスト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でどうすればいいですか?

+0

何を試しましたか? – talex

+0

その中括弧は何ですか?それはScalaではありません。 –

+0

私は、({a、b}、bs)を意味します。ここで、bはbsの要素です。 中括弧は私が望むものを説明することです。ありがとうございました! –

答えて

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) 
関連する問題