scala编程第16章学习笔记(4)——List对象的方法
通过元素创建列表:List.apply
List(1, 2, 3) 等价于List.apply(1, 2, 3):
scala> List.apply(1, 2, 3)
res0: List[Int] = List(1, 2, 3)
创建数值范围:List.range
List.range(from, until),可以创建从from开始到until减一的所有数值的列表。注:尾部until不在范围之内。
还有一个版本的range可以带step值作为第三参数。这个操作可以产生从from开始的,间隔为step的列表元素。step可以为正,也可以为负:
scala> List.range(1, 5) res1: List[Int] = List(1, 2, 3, 4) scala> List.range(1, 9, 2) res2: List[Int] = List(1, 3, 5, 7) scala> List.range(9, 1, -3) res3: List[Int] = List(9, 6, 3)
解除啮合列表:List.unzip
unzip操作是zip的相反。zip把两个列表组成对偶列表,unzip把对偶列表拆分还原为两个列表,其中一个列表由每对对偶的第一个元素组成,另一个由第二个元素组成:
scala> val zipped = "abcde".toList zip List(1, 2, 3) zipped: List[(Char, Int)] = List((a,1), (b,2), (c,3)) scala> zipped.unzip res5: (List[Char], List[Int]) = (List(a, b, c),List(1, 2, 3))
连接列表:List.flatten、List.concat
flatten方法以列表的列表做参数,并把所有的元素列表连接在一起。举例如下:
scala> val xss = List(List('a', 'b'), List('c'), List('d', 'e'))
xss: List[List[Char]] = List(List(a, b), List(c), List(d, e))
scala> xss.flatten res7: List[Char] = List(a, b, c, d, e)
concat方法与flatten类似,它能够连接多个元素列表。将多个列表以重复参数的形式直接传递给方法。数量不限:
scala> List.concat(List('a', 'b'), List('c')) res9: List[Char] = List(a, b, c) scala> List.concat(List(), List('b'), List('c')) res10: List[Char] = List(b, c) scala> List.concat() res11: List[Nothing] = List()