下面是我的scala列表
List((1409497202065,0.533), (1411804719,0.533), (1411804735,0.533), (1411811091,0.0))
现在我应该如何转换上面的列表以获得以下输出
List(List(1409497202065,0.533),List(1411804719,0.533), List(1411804735,0.533), List(1411811091,0.0))
答案 0 :(得分:2)
鉴于lst
是上述列表,您可以直接映射它:
lst.map {
case (a, b) => List(a, b)
case _ => Nil // just in case you got some data that doesn't fit
}
这会生成List[List[Double]]
,如下所示:
List(List(1409497202065.0,0.533),List(1411804719.0,0.533), List(1411804735.0,0.533), List(1411811091.0,0.0))
上面系统的美妙之处在于它可以无限扩展;因为总是可以向match
块添加更多案例
ps:列表中的第一个数字太大而不是整数,可以使用String
s BigInt
s,Long
s甚至{{1}来修复}Š
答案 1 :(得分:1)
试试这个:
myList.map(_.productIterator.toList)
scala> val myList = List((14,0.533), (14118,0.533), (1735,0.533), (1411,0.0))
myList: List[(Int, Double)] = List((14,0.533), (14118,0.533), (1735,0.533), (1411,0.0))
scala> myList.map(_.productIterator.toList)
res22: List[List[Any]] = List(List(14, 0.533), List(14118, 0.533), List(1735, 0.533), List(1411, 0.0))
productIterator.toList
将元组转换为List
,但将类型更改为Any
,因此如果您希望在JSON中将其序列化,则必须:
myList.map(_.productIterator.map(_.toString).toList)
如果元组中的类型不符合
,您可能需要Shapeless库中的异构列表如果您只想在String
内添加一个List
:
myList.map(_.productIterator.mkString(","))
答案 2 :(得分:0)
为了简单和可读性,请考虑这一点,以便理解给定列表的a
,
for ( (x,y) <- a ) yield List(x,y)
这也适用于(可能)空的重复列表。