Mathematica 9 is now available

Documentation / Mathematica / Mathematicaブック / Mathematicaの仕組み / リストの操作 /

2.4.2 指標によるリストの操作

リストの部分の抽出

これは部分13のリストを与える.

In[1]:= {a, b, c, d}[[{1, 3}]]

Out[1]=

これはネストしたリストである.

In[2]:= m = {{a, b, c}, {d, e}, {f, g, h}};

これは最初と3番目の部分のリストを与える.

In[3]:= m[[{1, 3}]]

Out[3]=

これはこれらそれぞれの最初の部分のリストを与える.

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

Out[4]=

これは最初の2つの部分のリストを与える.

In[5]:= m[[{1, 3}, {1, 2}]]

Out[5]=

これはすべてのサブリストの2番目の部分を与える.

In[6]:= m[[All, 2]]

Out[6]=

m[[... ]] = valueのような割当てを使うとリストの一部をいつでもリセットすることができる.

これはmの部分12をリセットする.

In[7]:= m[[1, 2]] = x

Out[7]=

これによりmの形はこうなった.

In[8]:= m

Out[8]=

これは部分1xに,部分3yにリセットする.

In[9]:= m[[{1, 3}]] = {x, y}; m

Out[9]=

これは部分13の両方をpにリセットする.

In[10]:= m[[{1, 3}]] = p; m

Out[10]=

これはmというもとの形を回復する.

In[11]:= m = {{a, b, c}, {d, e}, {f, g, h}};

これはm[[{1, 3}, {1, 2}]]で指定したすべての部分をリセットする.

In[12]:= m[[{1, 3}, {1, 2}]] = x; m

Out[12]=

Rangeを用いて指定範囲のすべての指標を示すことができる.

In[13]:= m[[Range[1, 3], 2]] = y; m

Out[13]=

ネストしたリストを,各要素は座標の指標で与えられた位置にあり全体が空間に置かれている,と考えると便利なことがある.このように考えるとlist[[, , ... ]]を直接幾何学的に解釈したものが存在することになる.もしが単一の整数なら,それはk次元の単一スライスを抽出することを表し,これがリストの場合は平行スライスのリストを抽出することを表す.list[[, , ... ]]の最終結果は連続する次元をスライスして取得した要素の集合になる.

これは2次元配列に置かれたネストしたリストである.

In[14]:= (m = {{a, b, c}, {d, e, f}, {g, h, i}}) // TableForm

Out[14]//TableForm=

1および3を,次いで列1および2を取り出す.

In[15]:= m[[{1, 3}, {1, 2}]] // TableForm

Out[15]//TableForm=

Partはネストしたリストの構造化されたスライスを取り出しやすいように設定されている.しかし,場合によっては個々の部分の任意の集合を取り出したいこともあるだろう.そのような場合はExtractを使うとよい.

スライスの取得と個々の部分の取得

これは個々の部分1,31,2を抽出する.

In[16]:= Extract[m, {{1, 3}, {1, 2}}]

Out[16]=

Extractの重要な機能に,Positionのような関数で返されるのと同じ形の部分の位置のリストを取るというものがある.

これはネストしたリストを設定する.

In[17]:= m = {{a[1], a[2], b[1]}, {b[2], c[1]}, {{b[3]}}};

これはmにおける位置のリストを与える.

In[18]:= Position[m, b[_]]

Out[18]=

これはそれらの位置にある要素を抽出する.

In[19]:= Extract[m, %]

Out[19]=

リスト中の連続する要素の抽出と除去

これは位置2から初めて1つ置きの要素を取り出す.

In[20]:= Take[{a, b, c, d, e, f, g}, {2, -1, 2}]

Out[20]=

これは1つ置きの要素を除去する.

In[21]:= Drop[{a, b, c, d, e, f, g}, {2, -1, 2}]

Out[21]=

Partと同じようにTakeDropもネストしたリストの連続したレベルで一連のスライスを取り出すと見ることができる.TakeDropを使って配列における要素のブロックを扱うこともできる.

これは配列である.

In[22]:= (m = {{a, b, c}, {d, e, f}, {g, h, i}}) // TableForm

Out[22]//TableForm=

これは最初のの部分配列である.

In[23]:= Take[m, 2, 2] // TableForm

Out[23]//TableForm=

これは最初の2列の全要素を取り出す.

In[24]:= Take[m, All, 2] // TableForm

Out[24]//TableForm=

これは最初の2列の要素はひとつも残さない.

In[25]:= Drop[m, None, 2] // TableForm

Out[25]//TableForm=

リストへの要素の挿入とリストからの要素の除去

これはリスト中の要素2,1xにする.

In[26]:= Insert[{{a, b, c}, {d, e}}, x, {2, 1}]

Out[26]=

これで再び要素を削除する.

In[27]:= Delete[%, {2, 1}]

Out[27]=

リストの部分の置き換え

これはリストの3番目の要素をxで置換する.

In[28]:= ReplacePart[{a, b, c, d}, x, 3]

Out[28]=

これはリストの最初と4番目の部分を置換する.複数の部分の指定には二重リストが必要である.

In[29]:= ReplacePart[{a, b, c, d}, x, {{1}, {4}}]

Out[29]=

これは単位行列である.

In[30]:= IdentityMatrix[3]

Out[30]=

これは行列の2,2コンポーネントをxで置換する.

In[31]:= ReplacePart[%, x, {2, 2}]

Out[31]=



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.