|
2.1.4 式の部分抽出
リストが単に式の一形態であることはすでに説明した通りだが,その逆に,一般的な式もリストと同様に使えたとしても驚かないだろう.リストの各成分を個別に参照できるように,一般的な式の部分もまた個別に参照することができる.
こうすると,リスト{a, b, c}から第2要素 を1つだけ取り出すことができる.
In[1]:= {a, b, c}[[2]]
Out[1]= 
加算式から第2要素を取り出すのにも同じ方法が使える.
In[2]:= (x + y + z)[[2]]
Out[2]= 
マイナスを指定値に付けると末尾から数えた位置を指定することができる.ここでは最後尾の要素が抽出される.
In[3]:= (x + y + z)[[-1]]
Out[3]= 
第0要素は頭部である.
In[4]:= (x + y + z)[[0]]
Out[4]= 
ネストしたリストの部分抽出を行うときと同じ方法で,f[g[a], g[b]]等の一般式からある部分を抽出することができる.
第1部分が抽出される.
In[5]:= f[g[a], g[b]] [[1]]
Out[5]= 
{1,1}番の部分が抽出される.
In[6]:= f[g[a], g[b]] [[1, 1]]
Out[6]= 
式1 + x^2の{2,1}番の部分が抽出される.
In[7]:= (1 + x^2) [[2, 1]]
Out[7]= 
完全形で式を表示させ,{2,1}番の部分が何か確認する.
In[8]:= FullForm[1 + x^2]
Out[8]//FullForm= 
添数の式の部分への割当ては,FullFormによるMathematica内部の表記形に従って行われる.これらの表記形は,必ずしも表示に現れる順番に対応しない.このことは,標準内部表記が使われるが,特別な形で表示される代数式に対して特に当てはまる.
x / yの内部表記形を見てみる.
In[9]:= FullForm[x / y]
Out[9]//FullForm= 
部分指定は,内部表記形に従い解釈される.
In[10]:= (x / y)[[2]]
Out[10]= 
リストの部分と同じように式の部分を操作することができる.
式a + b + c + dの第3部分をx^2に置き換える.和の構成順が自動調整されることに注意.
In[11]:= ReplacePart[a + b + c + d, x^2, 3]
Out[11]= 
別の式を入力する.
In[12]:= t = 1 + (3 + x)^2 / y
Out[12]= 
完全形で見てみる.
In[13]:= FullForm[ t ]
Out[13]//FullForm= 
式tの一部分を変更する.
In[14]:= t[[2, 1, 1]] = x
Out[14]= 
tの表記形が変わったかどうかを確認 する.
In[15]:= t
Out[15]= 

式の部分操作を行う関数
1.2.4において,添数のリストを作り,それをもとにリストから複数の要素を一括抽出する方法を説明した.それと全く同じやり方で,一般式の複数の部分も一括抽出することができる.
リストから第2,第4の要素を抽出 する.抽出した要素は新たなリストとして返される.
In[16]:= {a, b, c, d, e}[[{2, 4}]]
Out[16]= 
加法式から第2,第4部分を抽出する.結果は抽出した要素の和として返される.
In[17]:= (a + b + c + d + e)[[{2, 4}]]
Out[17]= 
ある式のある部分は,別のある関数の引数として見ることができる.添数のリストを与えることで複数の部分を抽出するとき,抽出される部分は,抽出元の関数によりまとめられる.
|