gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:20:59 25 4
gpt4 key购买 nike

假设我有以下元组列表:

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

我想在列表中获取 split(0),在另一个列表中获取 split(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._2, t._3)}.transpose

更新 :正如 Blaisorblade 所指出的,标准库实际上有一个内置的方法: unzip3 ,就像 unzip但是对于三元组而不是对:
val (l1, l2, l3) = tuples.unzip3

不用说,与我上面的手动解决方案相比,您应该更喜欢这种方法(但对于 arity > 3 的元组,这仍然适用)。

关于Scala:如何将元组元素转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com