加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 09:14:53 所属栏目:安全 来源:网络整理
导读:假设我有以下元组列表: val tuples = listOfStrings.map(string = { val split = string.split(":") (split(0),split(1),split(2)) }) 我想在列表中获取split(0),在另一个列表中分割(1)等等. 一个简单的方法可以通过写: list1 = tuples.map(x = x._1).toLi
假设我有以下元组列表:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读