Mathematicaプログラミング

■ リスト

リストの定義

リストは「{}」によって定義することができる。

In[1]:= a = {1, 3, 4}

Out[1]= {1, 3, 4}

なお、「{}」は「List[]」のシンタックスシュガーのため、 「List[]」を用いてもよい。

In[1]:= List[1, 6, 4]

Out[1]= {1, 6, 4}

In[2]:= FullForm[{1, 8}]

Out[2]//FullForm= List[1, 8]

要素へのアクセス

要素へのアクセスは

[[インデックス]]

という形式で行う。

In[1]:= a = {1,3,4}

Out[1]= {1, 3, 4}

In[2]:= a[[1]]

Out[2]= 1

In[3]:= a[[3]]

Out[3]= 4

In[4]:= First[a]

Out[4]= 1

In[5]:= Rest[a]

Out[5]= {3, 4}

ここで、インデックスは1から始まることに注意すること。 0は式のヘッドを指す。

ネストしたリストに対しては以下のようにしてアクセスが可能である。

In[1]:= x = {1, {4, 5, {7, 8}}, 6}

Out[1]= {1, {4, 5, {7, 8}}, 6}

In[2]:= x[[2,3,2]]

Out[2]= 8

リストを扱う関数

Mathematicaで用意されているリストを扱う関数のうち、 よく使用するであろうと思われるものを挙げる。

関数の意味や利用方法に関しては関数型言語を 少しでもいじったことがあるならば、名前から推測出来るので割愛する。

以下の例では、関数の後に実行結果を記述する。

First[{1, 2, 3}]
1

Rest[{1, 2, 3}]
{2, 3}

Append[{1, 2, 3}, 99]
{1, 2, 3, 99}

Join[{1,2,3}, {10,20,30}]
{1, 2, 3, 10, 20, 30}

Map[(#*100)&, {1,2,3}]
{100, 200, 300}

MapThread[(#1/#2)&, {{10,20,30}, {5,4,3}}]
{2, 5, 10}

Fold[(#1*10+#2)&, 0, {1,2,3}]
123

Select[{1,2,3,4}, EvenQ]
{2, 4}

Complement[{1,2,3,4}, {2,3}]
{1, 4}