如何从子列表中提取元素?

我创建了一个列表来存储一些数据序列,其中每个序列包含三个元素。如何从序列中提取元素之一?

我尝试过像alco(0)(1)和get()这样的括号,但是它们不起作用。

val alco = List(("Light Beer","4%","23 OZ"),("Regular Beer","6%","23 OZ"))

val temp = alco(0).get(1)

println(temp)

结果显示:

  

错误:值get不是(String,String,String)的成员         val temp = alco(0).get(1)

wslw520 回答:如何从子列表中提取元素?

scala> val alco = List(("Light Beer","4%","23 OZ"),("Regular Beer","6%","23 OZ"))
alco: List[(String,String,String)] = List((Light Beer,4%,23 OZ),(Regular Beer,6%,23 OZ))

scala> val (_,temp,_) = alco(0)
temp: String = 4%

scala> val temp = alco(0)._2
temp: String = 4%

请注意,按索引访问Scala列表具有O(n)的复杂性,其中n是列表的大小。因此,如果要遍历它们-最好使用mapcollectfoldLeftforeach调用:

scala> alco.map { case (_,_) => temp }
res0: List[String] = List(4%,6%)

scala> alco.foreach { x => println(x._2) }
4%
6%
,

@Andriy指出:

val alco = List(("Light Beer","23 OZ"))

的类型为List[Tuple3[String,String]],并且由于Tuple3没有get方法,因此您会收到错误消息。

scala.Tuple3

要解决此问题,只需按如下所示定义列表:

val alco = List(List("Light Beer",List("Regular Beer","23 OZ"))

这样,它将是List[List[String]]类型,您的代码应该可以工作。

本文链接:https://www.f2er.com/3130031.html

大家都在问