How to | リストに関数をマップする方法

Wolfram言語にはリストを使用するための強力な操作が数多く含まれている.リストの個々の要素に関数をマップすることが望ましい場合が多くある.リストを作成できる関数はこの操作をデフォルトで行うが,リストを作成しない関数については関数Mapを使ってこの操作を行うことができる.

まず1から5までの整数のリストを設定する:

In[1]:=
Click for copyable input
Out[1]=

Mapを使うとリストのすべての要素それぞれに関数をマップすることができる.以下の例では未定義の関数であるを使う:

In[2]:=
Click for copyable input
Out[2]=

」をMapの簡略表記として使うことができる(これは上の例と同じコマンドである):

In[3]:=
Click for copyable input
Out[3]=

数学関数の多くがListableの特性を持つ.つまり,これらの関数は自動的にリストにマップされる:

In[4]:=
Click for copyable input
Out[4]=
In[5]:=
Click for copyable input
Out[5]=

関数がListableではない場合は,代りにMapを使うことができる.5個の2×2行列のリストを設定する:

In[6]:=
Click for copyable input
Out[6]=

Mapを使って,MatrixFormをリストに対してマップし,それぞれを数学表記で見る:

In[7]:=
Click for copyable input
Out[7]=

今度はMapを使ってリストの行列それぞれについて固定値を計算する:

In[8]:=
Click for copyable input
Out[8]=

Mapは,単にリストだけに働くものではなく,どのような式にでも使うことができる:

In[9]:=
Click for copyable input
Out[9]=
    

Applyは,もうひとつの関数プログラミング操作である.これは式の頭部を置換する.

この関数がどのように働くかを2つの未定義関数()を使って見ることができる:

In[1]:=
Click for copyable input
Out[1]=

Applyの簡略表記は「」である(これは上の例と同じコマンドである):

In[2]:=
Click for copyable input
Out[2]=

よく使われる式はWolfram言語においてStandardFormで表示されるが,その内在するFullFormApplyをいかに使用するかを示している:

In[3]:=
Click for copyable input
Out[3]=

例えば以下の例では,和を積に変える:

In[4]:=
Click for copyable input
Out[4]=
    

Applyは,リストの要素を関数の引数に変換させたい場合に便利である.

5個の順序対のリストを作成する:

In[1]:=
Click for copyable input
Out[1]=

順序対の最初の数を2番目で割る場合にModは残余を求める:

In[2]:=
Click for copyable input
Out[2]=

Modをすべての対に適用する場合には,リストのレベル1(で指定される)で作業する必要がある:

In[3]:=
Click for copyable input
Out[3]=

」を簡略表記として使ってレベル1で適用することができる:

In[4]:=
Click for copyable input
Out[4]=

次は,Functionを純関数とともに使って同じことを行う別の方法である:

In[5]:=
Click for copyable input
Out[5]=

次はFunctionの短縮形を使う:

In[6]:=
Click for copyable input
Out[6]=