リストの分割と充填

Partition[list,n]list を長さ n のサブリストに分割する
Partition[list,n,d]オフセット d でサブリストに分割する
Split[list]list を同一要素の組に分割する
Split[list,test]test を満足する隣り合った要素に分割する

リスト要素の分割

これは3つずつのブロックに分割する.
In[1]:=
Click for copyable input
Out[1]=
次はオフセット1で3つずつのブロックに分割する.
In[2]:=
Click for copyable input
Out[2]=
オフセットはブロックの大きさよりも大きくても構わない.
In[3]:=
Click for copyable input
Out[3]=
同一要素のグループに分割する.
In[4]:=
Click for copyable input
Out[4]=
隣接する要素が同一ではないグループに分割する.
In[5]:=
Click for copyable input
Out[5]=

Partitionは事実上リストの連続する要素をサブリストに分ける.デフォルトではもとのリストから「はみ出す」サブリストは含まない.

これははみ出しが起る前に停止する.
In[6]:=
Click for copyable input
Out[6]=
これもはみ出しが起る前に停止する.
In[7]:=
Click for copyable input
Out[7]=

Partitionを使ってもとのリストの端がはみ出すサブリストを含ませることもできる.デフォルトではもとのリストを循環的に使って追加要素を埋めていく.指定した要素で充填することも可能である.

これはもとのリストを循環的に扱った追加的なサブリストを含んでいる.
In[8]:=
Click for copyable input
Out[8]=
もとのリストが要素で充填されている.
In[9]:=
Click for copyable input
Out[9]=
こうすると要素を使って循環的に充填する.
In[10]:=
Click for copyable input
Out[10]=
この場合は充填はせず,長さが違うサブリストが与えられる.
In[11]:=
Click for copyable input
Out[11]=

Partitionはテンプレートをもとのリストに沿ってスライドさせて要素を取り出すことでサブリストを抽出するものと考えることができる.このプロセスをどこから始めどこで終了するかをPartitionに指示することができる.

これはもとのリストと重なるすべてのサブリストを与える.
In[12]:=
Click for copyable input
Out[12]=
こうすると最初の部分しか重ならない.
In[13]:=
Click for copyable input
Out[13]=
Partition[list,n,d] または Partition[list,n,d,{1,-1}]はみ出しのないサブリストだけを保存する
Partition[list,n,d,{1,1}]最後の部分のはみ出しを許す
Partition[list,n,d,{-1,-1}]最初の部分のはみ出しを許す
Partition[list,n,d,{-1,1}]最初と最後のはみ出しを許す
Partition[list,n,d,{kL,kR}]最初と最後のサブリストの並べ方を指定する
Partition[list,n,d,spec]リスト list 中の要素を循環的に使って充填する
Partition[list,n,d,spec,x]要素 x を繰り返し使って充填する
Partition[list,n,d,spec,{x1,x2,...}]
を循環的に繰り返して充填する
Partition[list,n,d,spec,{}]充填は行わない

整列と充填の指定

整列指定Partitionに,もとのリストの最初の要素が最初のサブリストの位置 にあり,もとのリストの最後の要素が最後のサブリストの の位置にある一連のサブリストを与えるように指示する.

が最初のサブリストの位置1になるようにする.
In[14]:=
Click for copyable input
Out[14]=
が最初のサブリストの位置2になるようにする.
In[15]:=
Click for copyable input
Out[15]=
がまず位置4になる.
In[16]:=
Click for copyable input
Out[16]=
与えられたリストから循環的に充填する.
In[17]:=
Click for copyable input
Out[17]=

ListConvolveのような関数は整列と充填にPartitionと同じ方法を使う.

場合によってはリストに明示的に充填を挿入すると便利なことがある.その場合はPadLeftPadRightを使うとよい.

PadLeft[list,n]ゼロを左側に挿入して長さ n になるように充填する
PadLeft[list,n,x]要素 x を繰り返して充填する
PadLeft[list,n,{x1,x2,...}] を循環的に繰り返して充填する
PadLeft[list,n,list]list を循環的に繰り返して充填する
PadLeft[list,n,padding,m]右側に m 要素のマージンを残す
PadRight[list,n]右側にゼロを挿入して充填する

リストの充填

リストの長さが6になるように充填する.
In[18]:=
Click for copyable input
Out[18]=
を循環的に挿入して充填する.
In[19]:=
Click for copyable input
Out[19]=
これは右側にも3のマージンを残す.
In[20]:=
Click for copyable input
Out[20]=

PadLeftPadRightPartitionはネストしたリストに使うことができる.

これで3×3の配列を作る.
In[21]:=
Click for copyable input
Out[21]=
この配列をオフセット1で2×2のブロックに分割する.
In[22]:=
Click for copyable input
Out[22]=

充填指定にネストしたリストを使うと,各レベルでリストの要素が循環的に使われる.

こうすると充填リストのコピーが循環的に使われる.
In[23]:=
Click for copyable input
Out[23]=
これは充填のみからなるリストである.
In[24]:=
Click for copyable input
Out[24]=
New to Mathematica? Find your learning path »
Have a question? Ask support »