式におけるレベル
関数Partを使えば Mathematica 式の特定部分だけを参照することができる.しかし,式の構造がほとんど一様ならば,複数部分に一括で参照することができた方が通常便利になる.
式の複数部分をまとめて指定するには,レベル指定に基づいた,一般化された方法を使う.多くの Mathematica 関数では,それらを式の特定部分に作用させるとき,作用対象になるレベル位置を指定することができるようになっている.
Out[1]//TreeForm= |
| |  |
式

のレベル1にある

を探させる.1つだけ見付かる.
| Out[2]= |  |
今度は,レベル2まで探させる.レベル1,2の両方にある

が探し当てられる.
| Out[3]= |  |
こうすると,検索をレベル2だけに絞ることができる.

は1つだけ見付かる.
| Out[4]= |  |
| Position[expr,form,n] | 式 expr においてレベル n までに形 form が現れる位置を返す |
| Position[expr,form,{n}] | 厳密にレベル n での位置を返す |
レベルを使ったPositionの制御
ある式における部分のレベルは,単にこの部分が現れる位置までの,木構造の頂点からの距離ととらえることもできる.このとき,木の頂点はレベル0とする.
これは,レベル n にある部分は,n 個の添数からなる列で完全に指定することができる,ということに相当する.
レベルの指定
Out[5]//TreeForm= |
| |  |
レベル2から下層方向に

を探させる.
| Out[6]= |  |
こうすると,式の頭部以外で

の現れる位置を得ることができる.
| Out[7]= |  |
今度は,頭部での

の出現も検索対象に含める.
| Out[8]= |  |
| Level[expr,lev] | 式 expr のレベル lev で指定されたレベルにある部分のリスト |
| Depth[expr] | 式 expr のレベル総数を返す |
レベルの判定と抽出
最上位からレベル2までの,

のすべての部分を列挙させる.
| Out[9]= |  |
| Out[10]= |  |
普通のレベルの使い方が分かってきたところで,今度は,負のレベルの使い方を見てみる.レベルに負の値を指定すると,木構造の最下位から数えた部分を指すことができる.例えば,レベル-1には,木の葉の部分に当たるすべてのシンボルや数のオブジェクトが含まれる.
式

のレベル-1にあるすべての部分を列挙させる.
| Out[11]= |  |
TreeFormで示されるように,式は「深さ」を持つものと考えられる.一般に,ある式においてレベル-n は,深さを n とした要素式から構成されると定義される.
式

の深さは2である.
| Out[12]= |  |
レベル-2にある

の部分は,深さがちょうど2の部分である.
| Out[13]= |  |