0

私はscalaが初めてで、map、flatMap、および/または理解のために次のことを成し遂げたいと思っています。

リストのリストがありますl = List[List[T]]。たとえば、l = [[1,2,3],[2,4,6,4],[3,4,6,2,3]]. 内部の各リストのl長さはさまざまであることに注意してください。

今、私val x: List[Int] = [1,2,3]はいくつかの操作を行いたいと思っておりxlそれが返されます[[1,1,2,3], [1,2,4,6,4], [1,3,4,6,2,3], [2,1,2,3], [2,2,4,6,4], [2,3,4,6,2,3], [3,1,2,3], [3,2,4,6,4], [3,3,4,6,2,3]](サブリストの順序は関係ありません)。

これを行うには map または flatMap または for-loop を使用する必要があるように感じますが、長い試行錯誤の末、型を正しくすることさえできません。誰でも私を助けることができますか?

4

2 に答える 2

2
x.flatMap(i => l.map(i::_))
于 2014-06-04T18:00:06.000 に答える
2
scala> val ls = List(List(1,2,3),List(2,4,6,4),List(3,4,6,2,3))
ls: List[List[Int]] = List(List(1, 2, 3), List(2, 4, 6, 4), List(3, 4, 6, 2, 3))

scala> val xs: List[Int] = List(1,2,3)
xs: List[Int] = List(1, 2, 3)

scala> for(x <- xs; l <- ls) yield x +: l
res22: List[List[Int]] = List(List(1, 1, 2, 3), List(1, 2, 4, 6, 4), List(1, 3, 4, 6, 2, 3), List(2, 1, 2, 3), List(2, 2, 4, 6, 4), List(2, 3, 4, 6, 2, 3), List(3, 1, 2, 3), List(3, 2, 4, 6, 4), List(3, 3, 4, 6, 2, 3))
于 2014-06-04T18:00:30.933 に答える