正确的Scala方式循环/映射2列表并合并为1个列表

时间:2017-04-10 05:13:40

标签: scala list merge

Scala非常新,例如有2个列表

val list1: List[Int] = List(10,11)
val list2: List[Int] = List(1,2,3)

想要创建一个这样的列表:

List((10,1),(10,2),(10,3),(11,1),(11,2),(11,3))

我该怎么做呢? 对不起,如果以前有人询问过这个问题,请随时将答案链接给我,如果之前已经回答过,我很乐意关闭这个,谢谢。

1 个答案:

答案 0 :(得分:0)

试一试

list1.flatMap(x => list2.map(y => (x, y)))

...对flatMapmap的调用组合表明for理解也有效......

for (x <- list1; y <- list2) yield (x, y)

......可能还有其他方法。我相信在大多数情况下,编译器足够聪明,可以用等同于forflatMap方法的字节代码替换map理解,因此这两者应该是等效的性能(尽管我没有测试这个)...