我有这个元组序列
val data = Seq(((1,2),3), ((4,5),6), ((7,8),9))
我想把它压扁以获得
Seq((1,2,3), (4,5,6), (7,8,9))
答案 0 :(得分:6)
应用匿名函数来改组元组:
val data = Seq(((1,2),3), ((4,5),6), ((7,8),9))
data map { case ((a, b), c) => (a, b, c) }
答案 1 :(得分:0)
您可以编写自己的方法来转换元组,该方法需要((X, Y), Z)
并返回(X, Y, Z)
。
例如
def flattenMe[X, Y, Z](tuple: ((X, Y), Z)): (X, Y, Z) =
(tuple._1._1, tuple._1._2, tuple._2)
或者,您可以传递序列本身并展平每个元组。
it("flattens me to single tuple"){
def flattMe[X, Y, Z](sequence: Seq[((X, Y), Z)]) : Seq[(X, Y, Z)] =
sequence.map { case ((x, y), z) => (x, y, z)}
val data = flattMe(Seq(((1,2),3), ((4,5),6), ((7,8),9)))
assert(data.head == (1, 2, 3))
assert(data(1) == (4, 5, 6))
assert(data(2) == (7, 8, 9))
}