Scala関数式プログラミング-Listの一般的な方法
4255 ワード
1、Listの作成
Scalaリストは配列に類似しており、すべての要素のタイプは同じですが、リストは可変であり、値が定義されると変更できません.次に、リストは再帰的な構造(つまりリンクテーブル構造)を有し、配列は異なります.リストの要素タイプTは、List[T]と書くことができる.たとえば、次のような種類のリストが表示されます.
もちろん、Nilとリストの作成を行うこともできます.
2、List要素の取得及び遍歴
リスト全体を印刷するにはprintlnメソッドを直接使用すればよいがlistを巡回するにはforループを使用することができる.同時に,(n)またはapply(n)を用いてListのn番目の要素にアクセスすることができる.
出力:
リスト内の要素にアクセスするには、特別な方法を使用することもできます.たとえば、head戻りリストの最初の要素tailは、最初の要素以外の要素lastを含むリストを返します.最後の最初の要素isEmptyは、リストが空の場合trueを返します.
出力:
3、List接続
::演算子またはList.::()メソッドまたはList.concat()メソッドは、2つ以上のリストを接続します.例は次のとおりです.
出力:
4、使用方法によるListの作成
リストを使用できます.fill()メソッドを使用して、重複数を指定する要素のリストを作成します.
出力:
List.tabulate()メソッドは、指定された関数によってリストを作成します.メソッドの最初のパラメータは要素の数であり、2 Dであってもよく、2番目のパラメータは指定された関数であり、指定された関数の計算結果を返してリストに挿入します.開始値は0です.例は次のとおりです.
出力:
5、List常用方法(更新中)
リバース反転
出力:
要素の追加
リストは可変であるため、リストに要素を追加するには、新しいリストが返されます.
出力:
containsに要素が含まれているかどうか
出力:
リストのすべての要素に関数を適用
foreachの戻り値がない場合、mapは新しいリストを返します.
mkString:ListをStringに変換
出力:
sortedソート
出力:
Scalaリストは配列に類似しており、すべての要素のタイプは同じですが、リストは可変であり、値が定義されると変更できません.次に、リストは再帰的な構造(つまりリンクテーブル構造)を有し、配列は異なります.リストの要素タイプTは、List[T]と書くことができる.たとえば、次のような種類のリストが表示されます.
val site:List[String] = List("Runoob","Baidu","Google")
val nums:List[Int] = List(1,2,3,4)
val empty:List[Nothing] = List()
val dim:List[List[Int]] = List(
List(1,0,0),List(0,1,0),List(0,0,1)
)
もちろん、Nilとリストの作成を行うこともできます.
val site1 = "Runoob" :: ("Baidu" :: ("Google" :: Nil))
val nums1 = 1 :: (2 :: (3 :: (4 :: Nil)))
val empty1 = Nil
val dim1 = (1 :: (0 :: (0 :: Nil))) ::
(0 :: (1 :: (0 :: Nil))) ::
(0 :: (0 :: (1 :: Nil))) :: Nil
2、List要素の取得及び遍歴
リスト全体を印刷するにはprintlnメソッドを直接使用すればよいがlistを巡回するにはforループを使用することができる.同時に,(n)またはapply(n)を用いてListのn番目の要素にアクセスすることができる.
println(site(0))
println(dim(1)(1))
println(site.apply(0))
println(dim.apply(1)(1))
println(site)
for(i
出力:
Runoob
1
Runoob
1
List(Runoob, Baidu, Google)
Runoob
Baidu
Google
リスト内の要素にアクセスするには、特別な方法を使用することもできます.たとえば、head戻りリストの最初の要素tailは、最初の要素以外の要素lastを含むリストを返します.最後の最初の要素isEmptyは、リストが空の場合trueを返します.
println( " : " + site.head )
//tail
println(" " + site.tail)
println( " : " + site.last )
println( " site : " + site.isEmpty )
println( " nums : " + nums.isEmpty )
出力:
: Runoob
List(Baidu, Google)
: Google
site : false
nums : false
3、List接続
::演算子またはList.::()メソッドまたはList.concat()メソッドは、2つ以上のリストを接続します.例は次のとおりです.
val site2 = "Facebook" :: ("Taobao" :: Nil)
val site_all1 = site1 ::: site2
println( "site1 ::: site2 : " + site_all1 )
val site_all2 = site1.:::(site2)
println( "site1.:::(site2) : " + site_all2 )
val site_all3 = List.concat(site1,site2)
println( "List.concat(site1, site2) : " + site_all3 )
出力:
site1 ::: site2 : List(Runoob, Baidu, Google, Facebook, Taobao)
site1.:::(site2) : List(Facebook, Taobao, Runoob, Baidu, Google)
List.concat(site1, site2) : List(Runoob, Baidu, Google, Facebook, Taobao)
4、使用方法によるListの作成
リストを使用できます.fill()メソッドを使用して、重複数を指定する要素のリストを作成します.
val fillsite = List.fill(3)("Runoob")
println( "site : " + fillsite )
val fillnum = List.fill(10)(2)
println( "num : " + fillnum )
出力:
site : List(Runoob, Runoob, Runoob)
num : List(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
List.tabulate()メソッドは、指定された関数によってリストを作成します.メソッドの最初のパラメータは要素の数であり、2 Dであってもよく、2番目のパラメータは指定された関数であり、指定された関数の計算結果を返してリストに挿入します.開始値は0です.例は次のとおりです.
val squares = List.tabulate(6)(x=>x*x)
println( " : " + squares )
val mul = List.tabulate(4,5)(_ * _)
println( " : " + mul )
出力:
: List(0, 1, 4, 9, 16, 25)
: List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12))
5、List常用方法(更新中)
リバース反転
println( "site : " + site )
println( "site : " + site.reverse )
出力:
site : List(Runoob, Baidu, Google)
site : List(Google, Baidu, Runoob)
要素の追加
リストは可変であるため、リストに要素を追加するには、新しいリストが返されます.
val a:List[Int] = List(1,2)
val b = 3 +: a
println(b)
val c = a :+ 3
println(c)
出力:
List(3, 1, 2)
List(1, 2, 3)
containsに要素が含まれているかどうか
println("site FaceBook:" + site.contains("FaceBook"))
出力:
site FaceBook:false
リストのすべての要素に関数を適用
foreachの戻り値がない場合、mapは新しいリストを返します.
c.foreach(x => x * 2)
val d = c.map(_ * 2)
println(d)
mkString:ListをStringに変換
println(nums.mkString(","))
出力:
1,2,3,4
sortedソート
val e = b.sorted
println(e)
出力:
List(1, 2, 3)