scalaプログラミング第16章学習ノート(4)——Listオブジェクトの方法
2266 ワード
要素からリストを作成する:List.apply
List(1,2,3)は、Listに等価である.apply(1, 2, 3):
作成範囲:List.range
List.range(from,until)は、fromからuntilに減算されるすべての数値のリストを作成します.注意:末尾untilは範囲外です.
もう1つのバージョンのrangeはstep値を第3のパラメータとして持つことができる.この操作はfromから始まるstep間隔のリスト要素を生成することができる.Stepは正でも負でもよい:
噛み合い解除リスト:List.unzip
unzip操作はzipの反対です.zipは2つのリストを対偶リストに構成し、unzipは対偶リストを2つのリストに分割し、そのうちの1つのリストは各対偶の最初の要素からなり、もう1つは2番目の要素からなる.
接続リスト:List.flatten、List.concat
flattenメソッドは、リストのリストをパラメータとし、すべての要素リストを接続します.例を次に示します.
concatメソッドはflattenと同様で、複数の要素リストに接続できます.複数のリストを繰り返しパラメータとしてメソッドに直接渡します.数量に制限はありません:
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は範囲外です.
もう1つのバージョンのrangeはstep値を第3のパラメータとして持つことができる.この操作は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は2つのリストを対偶リストに構成し、unzipは対偶リストを2つのリストに分割し、そのうちの1つのリストは各対偶の最初の要素からなり、もう1つは2番目の要素からなる.
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()