微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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”的元组,这仍然适用).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐