Scala:如何将元组元素转换为列表

假设我有以下元组列表:

val tuples = listofStrings.map(string => {
            val split = string.split(":")
            (split(0),split(1),split(2))
        })

我想在列表中获取split(0),在另一个列表中分割(1)等等.
一个简单的方法可以通过写:

list1 = tuples.map(x => x._1).toList
list2 = tuples.map(x => x._2).toList
list3 = tuples.map(x => x._3).toList

是否有更优雅(功能)的方式实现上述,而不需要写3个独立的语句?

解决方法

这将给您的结果作为列表列表:

tuples.map{t => List(t._1,t._2,t._3)}.transpose

如果要将它们存储在局部变量中,请执行以下操作:

val List(l1,l2,l3) = tuples.map{t => List(t._1,t._3)}.transpose

更新:正如Blaisorblade所指出的那样,标准库实际上有一个内置的方法:unzip3,它就像解压缩,但是对于三元组而不是对:

val (l1,l3) = tuples.unzip3

不用说,你应该通过我上面的手工解决方案来支持这种方法(但是对于“3”的元组,这仍然适用).

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...