使用Scala打印列表中的第一个元素

Mic*_*ael 5 scala scala-collections

如何使用Scala打印列表中的第一个元素?

例如在Python中我可以写:

>>>l = [1,2,3,4]
>>>one = l[0]
>>>print one
Run Code Online (Sandbox Code Playgroud)

我怎么能在Scala上做到这一点

谢谢.

Hiu*_*ura 9

基本上,你的python代码相当于:

scala> val l = 1 :: 2 :: 3 :: 4 :: Nil
l: List[Int] = List(1, 2, 3, 4)

scala> val one = l.head
one: Int = 1

scala> println(one)
1
Run Code Online (Sandbox Code Playgroud)

(在scala解释器中运行.)

是关于Scala列表的文档.


它被问为一个辅助问题«如何显示每个元素?».

这是一个使用模式匹配的递归实现:

scala> def recPrint(xs: List[Int]) {
     | xs match {
     |     case Nil => // nothing else to do
     |     case head :: tail =>
     |         println(head)
     |         recPrint(tail)
     | }}
recPrint: (xs: List[Int])Unit

scala> recPrint(l)
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

正如David Weber在评论中指出的那样,如果你不能使用递归算法来访问列表的元素,那么你应该考虑使用另一个容器,因为访问a的第i个元素List需要O(N).

  • 如果你可以从头到尾遍历列表,那就递归一下吧.如果没有,则使用错误的数据结构,因为对于列表,应用是O(N).请改用Vector或Array. (3认同)

Bra*_*zic 9

正如Hiura所说,或者像这样:

object ListDemo extends App {
    val lst = List(1, 2, 3)
    println(lst(0)) // Prints specific value. In this case 1.
                    // Number at 0 position.
    println(lst(1)) // Prints 2.
    println(lst(2)) // Prints 3.
}
Run Code Online (Sandbox Code Playgroud)