Scala, ajouter une liste de variables au début de chaque liste dans une liste
Question
Je suis nouveau à la scala et que vous souhaitez obtenir la chose suivante fait à l'aide de la carte, flatMap, et/ou pour la compréhension.
J'ai une liste de listes l = List[List[T]]
.Par exemple, l = [[1,2,3],[2,4,6,4],[3,4,6,2,3]]
.Notez que chaque liste à l'intérieur de l
peut avoir une durée variable.
Maintenant, j'ai val x: List[Int] = [1,2,3]
et je veux faire une opération sur x
et l
qui renvoie [[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]]
(l'ordre des sous-listes n'a pas d'importance).
Je me sens comme je devrais utiliser la carte ou flatMap ou de boucle pour le faire, mais après une longue période d'essai je ne peux même pas obtenir le type correct.Quelqu'un peut-il m'aider à ce sujet?
La solution
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))
Autres conseils
x.flatMap(i => l.map(i::_))