如何在 Scala 中用整数映射列表中的值?
How to map the values inside a list with an integer in Scala?
我对 Scala 和函数式编程很陌生。而且我坚持使用 Scala 中的集合操作。我有一个这样的变量:
val res4: List[(List[Double], Option[Int])] =
List(
(List(4.0, 2.0, 3.0, 4.0, 3.0, 2.5, 4.0),1998),
(List(3.0, 4.0, 3.0, 3.0, 3.5, 2.0, 3.0, 3.0, 4.0).2000,
.......
)
我想通过使用列表中的每个分数来制作地图或类似的东西:
(4.0, 1998),
(2.0, 1998),
(3.0, 1998),
(4.0, 1998),
(3.0, 1998),
(2.5, 1998),
(4.0, 1998),
(3.0, 1998),
....
我该怎么做?
此外,如果您知道如何将 Some(1998) 转换为 1998 的技巧,我将不胜感激。
您可以使用 flatMap:
List(
(List(4.0, 2.0, 3.0, 4.0, 3.0, 2.5, 4.0), Some(1998)),
(List(3.0, 4.0, 3.0, 3.0, 3.5, 2.0, 3.0, 3.0, 4.0), Some(2000))
)
.flatMap(row => row._1.map(number => (number, row._2)))
.foreach(it => println(it))
我对 Scala 和函数式编程很陌生。而且我坚持使用 Scala 中的集合操作。我有一个这样的变量:
val res4: List[(List[Double], Option[Int])] =
List(
(List(4.0, 2.0, 3.0, 4.0, 3.0, 2.5, 4.0),1998),
(List(3.0, 4.0, 3.0, 3.0, 3.5, 2.0, 3.0, 3.0, 4.0).2000,
.......
)
我想通过使用列表中的每个分数来制作地图或类似的东西:
(4.0, 1998),
(2.0, 1998),
(3.0, 1998),
(4.0, 1998),
(3.0, 1998),
(2.5, 1998),
(4.0, 1998),
(3.0, 1998),
....
我该怎么做?
此外,如果您知道如何将 Some(1998) 转换为 1998 的技巧,我将不胜感激。
您可以使用 flatMap:
List(
(List(4.0, 2.0, 3.0, 4.0, 3.0, 2.5, 4.0), Some(1998)),
(List(3.0, 4.0, 3.0, 3.0, 3.5, 2.0, 3.0, 3.0, 4.0), Some(2000))
)
.flatMap(row => row._1.map(number => (number, row._2)))
.foreach(it => println(it))