你如何在Scala中展平这个列表:List(List(1, 2, 3), Nil, List(4, 5, 6), List(7, 8))
以便它进行循环而不只是附加像flatMap
这样的所有元素呢?期望的结果是:List(1, 4, 7, 2, 5, 8, 3, 6)
与this question不同,我的列表是单一类型List[List[Int]]
,但看起来我也可以使用递归函数调用。
答案 0 :(得分:3)
将元组映射为整数
list.flatMap(xs => xs.zipWithIndex).sortBy(_._2).map(_._1)
//output
List(1, 4, 7, 2, 5, 8, 3, 6)
答案 1 :(得分:0)
如果这是家庭作业,您需要将其标记为。
webClient.waitForBackgroundJavaScript(5_000);
String value = htmlPage.executeJavaScript("myOwnVariable").toString();
首先,收集非空列表。如果没有,我们就完成了。否则,收集每个剩余列表的头部,并连接到roundRobin处理的尾部。
答案 2 :(得分:0)
另一种递归方法,
def g(xs:List[List[Int]]): List[Int] = {
if (xs.flatten.isEmpty)
Nil
else
xs.flatMap(_.take(1)) ++ g(xs.map(_.drop(1)))
}
因此
g(List(List(1, 2, 3), List(), List(4, 5, 6), List(7, 8)))
List(1, 4, 7, 2, 5, 8, 3, 6)
和
g(List(Nil))
List()