アットウィキロゴ

リスト演算

リストの生成


a = [2, 4, 6, 8, 10]

レンジ

 レンジ表記を使うと、等差数列程度であれば簡単に定義することができる。

ghci>[1..5]
[1, 2, 3, 4, 5]
ghci>['a'..'c']
"abc"
ghci>[1, 3..10]
[1, 3, 5, 7, 9]

 レンジを使えば無限リストも作れる。Haskellには遅延評価の仕組みがあるので、無限リストの要素が必要になった時に初めて評価される。

ghci>[1, 2..]

cycle, repeat, replicate

 上記関数は、繰り返しを含むリストの定義に使われる。

ghci>cycle [1, 2, 3]
[1, 2, 3, 1, 2, 3, .....]
ghci>repeat 3
[3, 3, 3, 3, ....]
ghci>replicate 3 10
[10, 10, 10]

リストの連結

++演算子

 上記演算子で2つのリストを結合できる

ghci> [1, 2, 3] ++ [4, 5, 6]
[1, 2, 3, 4, 5, 6]

:演算子

 上記演算子で先頭に要素を追加できる

ghci> 1 : [2, 3, 4, 5]
[1, 2, 3, 4, 5]

リスト要素へのアクセス

!!演算子

 上記演算子で、インデックスを使用して要素にアクセスできる。

ghci> [1, 3, 5, 7, 9] !! 3
5

リストの比較

 数値と同様に、等号や不等号を用いて比較判定ができる。不等号は辞書順を基準に判定する。

文字列の長さ

 ***length関数

ghci>length [2, 4, 6, 8, 10]
5

要素、部分リストの抽出

head, tail, init, last

 上記演算子はよく使われるリスト関数で、以下のように要素または部分リストを抽出できる([1, 2, 3, 4, 5]に対して適用)。

head 1
tail [2, 3, 4, 5]
init [1, 2, 3, 4]
last 5

take, drop

 takeは先頭から指定した要素数のリストを取得し、dropは先頭から指定した要素数を除外したリストを取得する

take 3 [1, 2, 3, 4, 5] [1, 2, 3]
drop 3 [1, 2, 3, 4, 5] [4, 5]

反転

reverse関数

 上記関数でリストの順番を入れ替えることができる

判定関数

null関数

 上記演算子でリストが空かを調べられる

ghci> null []
True

elem関数

 上記演算子で要素がリストにあるかを調べられる。
 慣例的に、中置演算子として使われることが多い

ghci> 4 `elem` [2, 4, 6, 8]
True


最大値、最小値

maximum, minimum関数

 上記関数で、リスト内の最大値・最小値を抽出できる

要素全ての演算

sum, product

 上記演算子で、リストの全ての要素を加算または乗算できる
最終更新:2016年05月03日 11:27