Scala, добавьте список переменных в начало каждого списка в списке.
Вопрос
Я новичок в Scala и хочу выполнить следующее, используя карту, 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]
и я хочу сделать некоторую операцию над x
и l
который возвращает [[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]]
(порядок подсписков не имеет значения).
Я чувствую, что для этого мне следует использовать карту, FlatMap или цикл for, но после долгих испытаний я даже не могу правильно определить тип.Может ли кто-нибудь помочь мне в этом?
Решение
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))
Другие советы
x.flatMap(i => l.map(i::_))