指標によるリストの操作

Part[list,spec] または list[[spec]]リストの部分
Part[list,spec1,spec2,] または list[[spec1,spec2,]]ネストしたリストの部分
n最初から n 番目の部分
-n最後から n 番目の部分
{i1,i2,}部分のリスト
m;;nm から n までの部分
All部分すべて

リストの部分の抽出

これは部分1と3のリストを与える.
In[1]:=
Click for copyable input
Out[1]=
これはネストしたリストである.
In[2]:=
Click for copyable input
これは最初と3番目の部分のリストを与える.
In[3]:=
Click for copyable input
Out[3]=
これはこれらそれぞれの最初の部分のリストを与える.
In[4]:=
Click for copyable input
Out[4]=
これは最初の2つの部分のリストを与える.
In[5]:=
Click for copyable input
Out[5]=
の最初の2つの部分を与える.
In[6]:=
Click for copyable input
Out[6]=
それぞれの最後の部分を与える.
In[7]:=
Click for copyable input
Out[7]=
これはすべてのサブリストの2番目の部分を与える.
In[8]:=
Click for copyable input
Out[8]=
すべてのサブリストの最後の2つの部分を与える.
In[9]:=
Click for copyable input
Out[9]=

のような割当てを使うとリストの一部をいつでも再設定することができる.

これはの部分1,2を再設定する.
In[10]:=
Click for copyable input
Out[10]=
これによりの形はこうなった.
In[11]:=
Click for copyable input
Out[11]=
これは部分1をに,部分3をに再設定する.
In[12]:=
Click for copyable input
Out[12]=
これは部分1と3の両方をに再設定する.
In[13]:=
Click for copyable input
Out[13]=
これはのもとの形を回復する.
In[14]:=
Click for copyable input
これは,で指定したすべての部分を再設定する.
In[15]:=
Click for copyable input
Out[15]=
;;を用いて指定範囲のすべての指標を示すことができる.
In[16]:=
Click for copyable input
Out[16]=

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

これは二次元配列として置かれたネストしたリストである.
In[17]:=
Click for copyable input
Out[17]//TableForm=
行1および3を,次いで列1および2を取り出す.
In[18]:=
Click for copyable input
Out[18]//TableForm=

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

Part[list,{i1,i2,}]リスト
Extract[list,{i1,i2,}]要素
Part[list,spec1,spec2,]連続スライスによって指定された部分
Extract[list,{{i1,i2,},{j1,j2,},}]個々の部分のリスト

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

これは個々の部分1,3と1,2を抽出する.
In[19]:=
Click for copyable input
Out[19]=

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

これはネストしたリストを設定する.
In[20]:=
Click for copyable input
これはにおける位置のリストを与える.
In[21]:=
Click for copyable input
Out[21]=
これはそれらの位置にある要素を抽出する.
In[22]:=
Click for copyable input
Out[22]=
Take[list,spec]リスト中の指定の部分を取り出す
Drop[list,spec]リスト中の指定の部分を除く
Take[list,spec1,spec2,]Drop[list,spec1,spec2,]ネストしたリストの各レベルにおける指定部分を取り出したり除いたりする
n最初の n 個の要素
-n最後の n 個の要素
{n}要素 n のみ
{m,n}m 番目から n 番目までの要素(両要素を含む)
{m,n,s}m 番目から n 番目までの要素刻み幅 s
All全部の部分
None何も取り出さない

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

これは位置2から始めて1つ置きの要素を取り出す.
In[23]:=
Click for copyable input
Out[23]=
これは1つ置きの要素を除去する.
In[24]:=
Click for copyable input
Out[24]=

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

これは3×3配列である.
In[25]:=
Click for copyable input
Out[25]//TableForm=
これは最初の2×2の部分配列である.
In[26]:=
Click for copyable input
Out[26]//TableForm=
これは最初の2列の全要素を取り出す.
In[27]:=
Click for copyable input
Out[27]//TableForm=
これは最初の2列の要素はひとつも残さない.
In[28]:=
Click for copyable input
Out[28]//TableForm=
Prepend[list,elem]list の頭に element を加える
Append[list,elem]list の末尾に element を加える
Insert[list,elem,i]位置 ielement を挿入する
Insert[list,elem,{i,j,}]位置に挿入する
Delete[list,i]位置 i の要素を除去する
Delete[list,{i,j,}]位置の要素を除去する

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

これはリスト中の要素2,1をにする.
In[29]:=
Click for copyable input
Out[29]=
これで再び要素を削除する.
In[30]:=
Click for copyable input
Out[30]=
ReplacePart[list,i->new]list の位置 i の要素を new で置換する
ReplacePart[list,{i,j,}->new]new で置換する
ReplacePart[list,{i1->new1,i2->new2,}]位置 の部分を で置換する
ReplacePart[list,{{i1,j1,}->new1,}]位置の部分を で置換する
ReplacePart[list,{{i1,j1,},}->new]すべての部分 new で置換する

リストの部分の置き換え

これはリストの3番目の要素をで置換する.
In[31]:=
Click for copyable input
Out[31]=
これはリストの最初と4番目の部分を置換する.複数の部分の指定には二重リストが必要である.
In[32]:=
Click for copyable input
Out[32]=
これは3×3単位行列である.
In[33]:=
Click for copyable input
Out[33]=
これは行列の2,2要素をで置換する.
In[34]:=
Click for copyable input
Out[34]=

ReplacePartは常に新しいリストを生成するということを理解しておかなければならない.これは が行うように,すでにシンボルに割り当てられたリストを変更したりはしない.

値のリストをに割り当てる.
In[35]:=
Click for copyable input
Out[35]=
第3要素がで置換されたリストのコピーである.
In[36]:=
Click for copyable input
Out[36]=
の値は変わっていない.
In[37]:=
Click for copyable input
Out[37]=