2014-12-19 159 views
0

我有一排如下(智力,list(字符串))如何從scala列表中生成元組數組?

(22,List(B00000JCDS, B000004CSZ, B00016XN6Q, B00005LLY3, B00023B1UI)) 

我需要生成一個元組或任何其他集合如下:

(22,B00000JCDS) 
(22,B000004CSZ) 
(22,B00016XN6Q) 
(22,B00005LLY3) 
(22,B00023B1UI) 

如何產生這個數據集Scala呢?

回答

4
scala> a._2.map((a._1,_)) 
res3: List[(Int, String)] = List((22,B00000JCDS), (22,B000004CSZ), (22,B00016XN6Q), (22,B00005LLY3), (22,B00023B1UI)) 

,其中a是(22,List(B00000JCDS, B000004CSZ, B00016XN6Q, B00005LLY3, B00023B1UI))

1

該想到的最具可讀性的就是用for理解:如果你想要一個數組就叫toArray

scala> val g = (22,List("B00000JCDS", "B000004CSZ", "B00016XN6Q", "B00005LLY3", "B00023B1UI")) 
g: (Int, List[String]) = (22,List(B00000JCDS, B000004CSZ, B00016XN6Q, B00005LLY3, B00023B1UI)) 

scala> 
    | for { 
    |  fromList <- g._2 
    | } yield (g._1, fromList) 

res3: List[(Int, String)] = List((22,B00000JCDS), (22,B000004CSZ), (22,B00016XN6Q), (22,B00005LLY3), (22,B00023B1UI)) 

0

幾種方法以此爲給定行a,如下,

Array.fill(a._2.size)(a._1) zip a._2 

(Iterator.continually(a._1) zip a._2.iterator) toArray 

Array.tabulate(a._2.size)(i => (a._1, a._2(i)))