Scala,将变量列表添加到列表中每个列表的开头
题
我是 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]
我想做一些操作 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]]
(子列表的顺序无关紧要)。
我觉得我应该使用 map 或 flatMap 或 for-loop 来执行此操作,但经过长时间的尝试,我什至无法获得正确的类型。有人可以帮我吗?
解决方案
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::_))
不隶属于 StackOverflow