Scala 将元组列表转换为列表元组
如何将元组列表Scala 将元组列表转换为列表元组,scala,Scala,如何将元组列表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
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])
您需要
解压
scala> List((1,"a"), (3, "b"), (4, "d")).unzip
res1: (List[Int], List[String]) = (List(1, 3, 4),List(a, b, d))
类似地,对于列表[Tuple3[A,B,C]
,也有一个unzip3
,尽管任何更高的算术性都必须自己实现
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))
对于更高的算术数,您可以使用