从元组列表中提取列表的惯用法

时间:2014-02-19 14:17:05

标签: scala tuples

是否有一种在Scala中执行以下映射的简明方法?

val listOfTuples: List[Tuple2[Foo, Bar]] = ???
val (foos, bars) = listOfTuples // foo:List[Foo], bar:List[Bar]

我看到map List[Tuple[X, X]] List[List[X]]transpose然后{{1}}列表,尽管这只适用于由齐次类型参数组成的元组

2 个答案:

答案 0 :(得分:9)

你应该使用这样的方法unzip

val (foos, bars) = listOfTuples.unzip

还有unzip3的集合方法Tuple3

答案 1 :(得分:0)

如果对于arity 3到22你可以用product-collections执行此操作:

 val foos = listOfTuples._1
 val bars = listOfTuples._2