人気ブログランキング | 話題のタグを見る

Data.List モジュールの使い方(9) zip 関数の仲間

Data.List モジュールの zip 関数の仲間は、zip, zipWith, unzip の3つだ。いずれも Prelude の標準関数になっている。

zip 関数は2つのリストにから、対応する要素のペアを作り、そのペアのリストを返す。
Prelude> zip [1,2,3] [4,5,6]
[(1,4),(2,5),(3,6)]

zipWith 関数は、さらにそのペアの間に演算を施した結果をリストにして返す。
Prelude> zipWith (+) [1,2,3] [4,5,6]
[5,7,9]

unzip 関数は、zip 関数と丁度反対の操作を行う。ペアのリストから、fst の要素のリストと snd の要素のリストをペアにして返す。
Prelude> unzip [(1,4), (2,5), (3,6)]
([1,2,3],[4,5,6])

Prelude の標準関数にはこの他に、zip3, zip4, zip5, zip6, zip7, zipWith3, zipWith4, zipWith5, zipWith6, zipWith7, unzip3, unzip4, unzip5, unzip6, unzip7 が含まれる。いずれも zip, zipWith, unzip と同様の動作をするが、リストの数が、3, 4, 5, 6, 7 となる。下に zip3 ファミリーの動作を示す。

Prelude> zip3 [1,2,3] [4,5,6] [7,8,9]
[(1,4,7),(2,5,8),(3,6,9)]
Prelude> zipWith3 (\x y z -> x + y + z) [1,2,3] [4,5,6] [7,8,9]
[12,15,18]
Prelude> unzip3 [(1,4,7),(2,5,8),(3,6,9)]
([1,2,3],[4,5,6],[7,8,9])
by tnomura9 | 2011-08-23 22:08 | Haskell | Comments(0)
<< Data.List モジュール... ファイルの読み書き >>