5

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

例如在 Python 中,我可以写:

>>>l = [1,2,3,4]
>>>one = l[0]
>>>print one

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

谢谢。

4

4 回答 4

10

正如 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.
}
于 2013-09-21T14:03:38.520 回答
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

(在 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

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

于 2013-09-21T13:59:30.060 回答
2

可以在scaladoc for list中轻松找到答案

def head: A
Selects the first element of this list.
于 2013-09-23T20:45:01.107 回答
1

在这里,我们创建了一个包含变量 myList 的对象(对象名称:TestList)。

scala> object TestList{
     |       def main(args: (Array[String])){
     |       var myList = List(1,2,3,4,5)
     |       println("Complete List is : "+myList)
     |       println("Reverse List : "+myList.reverse)
     |       println("Print Send Element from list : " + myList(1))
     |       println("Print First three element : "+ myList.take(3))
     |       println("Remove First two element : "+myList.drop(2))
     |       }
     |       }

定义对象TestList

使用 main 方法调用对象

scala> TestList.main(Array(""))

输出:

    Complete List is : List(1, 2, 3, 4, 5)
    Reverse List : List(5, 4, 3, 2, 1)
    Print Send Element from list : 2
    Print First three element : List(1, 2, 3)
    Remove First two element : List(3, 4, 5)
于 2018-07-05T06:51:40.623 回答