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),List(0,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
时间: 2024-10-02 12:25:12