我想转换多个列表,每个列表都有一个恒定的内部列表大小,如下所示:
List(List(1, 2, 3), List(3, 4, 5))
List(List(1, 2), List(3, 4))
对此:
List((1, 2, 3), (3, 4, 5))
List((1, 2), (3, 4))
因此,如果val q: List[List[Int]] = List(List(1, 2, 3), List(3, 4, 5)
,可以尝试以下方法:
q.map(_.collect { case a :: b => (a,b) })
对于 3 元素列表示例,这为您提供了以下形式的内容:
List((1, List(2, 3)), (3, List(4, 5)))
我不能展平元组,因为它们包含两种类型:Int 和 List[Int],所以我不能按需要(1, List(2,3))
变成(1,2,3)
。
那么,我该如何扩展 flatten 函数来做到这一点,或者有没有更好的方法在 scala 中完成这个?scalaz 能帮上忙吗?
tl;dr:如何将列表的内部列表转换为元组?(可能的广义问题:如何展平多态元组?)