|
2.4.3 ネストしたリスト

ネストしたリストの構築方法
これは のネストしたリストに対応する表を生成する.
In[1]:= Table[x^i + j, {i, 2}, {j, 3}]
Out[1]= 
これは上記と同じネストしたリストに対応する配列を生成する.
In[2]:= Array[x^#1 + #2 &, {2, 3}]
Out[2]= 
疎な配列において明示的に指定されていない要素は0であると解釈される.
In[3]:= Normal[SparseArray[{{1, 3} -> 3 + x}, {2, 3}]]
Out[3]= 
最終リストの各要素は各入力リストからの1要素を含む.
In[4]:= Outer[f, {a, b}, {c, d}]
Out[4]= 
Array,SparseArray,Outer等の関数は常に「完全配列」を生成する.完全配列では,特定レベルのすべてのサブリストがすべて同じ長さになる.

完全配列の関数
Mathematicaは任意のネストしたリストを扱うことができる.リストが完全配列である必要はない.Tableを使って簡単に不調和配列を生成することができる.
これは三角配列を生成する.
In[5]:= Table[x^i + j, {i, 3}, {j, i}]
Out[5]= 

サブリストの平坦化
これは の配列を生成する.
In[6]:= Array[a, {2, 3}]
Out[6]= 
Flattenは事実上要素をその指標によって辞書式順序に並べる.
In[7]:= Flatten[%]
Out[7]= 

ネストしたリストにおけるレベルの置き換え
配列を生成する.
In[8]:= Array[a, {2, 2, 2}]
Out[8]= 
レベル3がレベル1に現れるようにレベルを置換する.
In[9]:= Transpose[%, {3, 1, 2}]
Out[9]= 
これで最初の配列を回復する.
In[10]:= Transpose[%, {2, 3, 1}]
Out[10]= 

ネストしたリストに関数を適用する
これはネストしたリストである.
In[11]:= m = {{{a, b}, {c, d}}, {{e, f}, {g, h}, {i}}};
レベル3に関数fを写像する.
In[12]:= Map[f, m, {2}]
Out[12]= 
レベル2に関数を適用する.
In[13]:= Apply[f, m, {2}]
Out[13]= 
fを部分とその指標の両方に適用する.
In[14]:= MapIndexed[f, m, {2}]
Out[14]= 

ネストしたリストの操作
これはネストしたリストである.
In[15]:= m = {{{a, b, c}, {d, e}}, {{f, g}, {h}, {i}}};
碓レベルで異なった量を循環させる.
In[16]:= RotateLeft[m, {0, 1, -1}]
Out[16]= 
配列を作るために零で充填する.
In[17]:= PadRight[%, {2, 3, 3}]
Out[17]= 
|