如何将元组列表List[(A,B)]
转换为列表(List[A], List[B])
的元组?
我已经尝试过追随但它看起来很粗糙,我希望有更好的方法来做到这一点
val flat: List[AnyRef] = aAndB.map{ x =>
x.map(y => List(y._1, y._2))
}.flatMap(x => x)
val typeA: List[A] = flat.filter {
case x: A => true
case _ => false
}.map(_.asInstanceOf[A])
val typeB: List[B] = flat.filter {
case x: B => true
case _ => false
}.map(_.asInstanceOf[B])
答案 0 :(得分:38)
您想要unzip
scala> List((1,"a"), (3, "b"), (4, "d")).unzip
res1: (List[Int], List[String]) = (List(1, 3, 4),List(a, b, d))
类似地,unzip3
有List[Tuple3[A, B, C]]
,通过更高级别的任何事情你都必须自己实施。
scala> List((1,"a", true), (3, "b", false), (4, "d", true)).unzip3
res2: (List[Int], List[String], List[Boolean]) = (List(1, 3, 4),List(a, b, d),List(true, false, true))