Coursera Scala 4-7:Lists


Coursera Scala 4-7:Lists

Lists

val nums = List(1,3,4)
val empty = List()
val fruit = List("apples","oranges")
val diag3 = List(List(1,0,0),List(0,1,0),List0,0,1))
  • immutable
  • List是递归的,arrays则不是

The List Type

和arrays一样,lists的元素必须是相同类型的。

Constructors of Lists

所有的Lists由:

  • 空的list Nil
  • 构造操作::,举个例子x :: xs会创建新的list,第一个元素为x,第二个元素为xs

Right Associativity

::是右结合性

"1"::("2"::("3"::Nil))            //> res1: List[String] = List(1, 2, 3)

scala中做了简化 所以 也可以写成

"1"::"2"::"3"::Nil

是等价的 ,::其实是方法名 相当于调用方法 可以写成.::

Nil.::(4).::(3).::(2).::(1)

Operations on Lists

  • head 取第一个元素
  • tail 返回不包含第一个元素的list
  • isEmpty

更多用于List的函数:

  • xs.length
  • xs.last 获得最后一个
  • xs.init 得到一个除了最后一个元素的列表
  • xs take n
  • xs drop n
  • xs(n)

Console代码

scala> def xs= List(0,1,2,3,4)  
xs: List[Int]  

scala> xs.length  
res0: Int = 5  

scala> xs.last  
res1: Int = 4  

scala> xs.init  
res2: List[Int] = List(0, 1, 2, 3)  

scala> xs take 1  
res3: List[Int] = List(0)  

scala> xs drop 1  
res4: List[Int] = List(1, 2, 3, 4)  

scala> xs(0)  
res5: Int = 0

创建新列表:
xs ++ ys 合并
xs.reverse 倒序
xs.updated(n,x)

查找元素:
xs indexOf x 不存在返回-1
xs contains x

List Patterns

Nil 表示空list
p :: ps 表示以p开头的元素 这个模式和[Head|Tail]一致
List(p1,...,p2) 也可以写成 p1::....::pn::Nil
当然也可以用_
例子:

   List(1,2,3) match {
      case List(1,_,3) => "yes"  //这样其实也是一种构造模式吧
   }                                              //> res2: String = yes

   
   
   
   

你可能感兴趣的:(Coursera Scala 4-7:Lists)