5.3.3 スライス表記 (slicing)

スライス表記はシーケンスオブジェクト (文字列、タプルまたはリスト) におけるある 範囲の要素を選択します。スライス表記は式として用いたり、代入や del 文の 対象として用いたりできます。スライス表記の構文は以下のようになります:

Download entire grammar as text.

上記の形式的な構文法にはあいまいさがあります: 式リストに見えるものは、 スライスリストにも見えるため、添字表記はスライス表記としても解釈されうる ということです。 この場合には、(スライスリストの評価結果が、適切なスライスや省略表記 (ellipsis) にならない場合)、スライス表記としての解釈よりも添字表記 としての解釈の方が高い優先順位を持つように定義することで、構文法をより 難解にすることなくあいまいさを取り除いています。同様に、 スライスリストが厳密に一つだけの短いスライスで、末尾にカンマが 続いていない場合、拡張スライスとしての解釈より、単純なスライスとして の解釈が優先されます。

単純なスライスに対する意味付けは以下のようになります。 一次語の値評価結果は、シーケンス型のオブジェクトでなければなりません。 下境界および上境界を表す式がある場合、それらの値評価結果は整数で なくてはなりません; デフォルトの値は、それぞれゼロと sys.maxint です。どちらかの境界値が負である場合、 シーケンスの長さが加算されます。こうして、スライスは i および j をそれぞれ指定した下境界、上境界として、 インデクス ki <= k < j となる全ての 要素を選択します。 選択の結果、空のシーケンスになることもあります。ij が 有効なインデクス範囲の外側にある場合でも、エラーにはなりません (範囲外の要素は存在しないので、選択されないだけです)。

拡張スライスに対する意味付けは、以下のようになります。 一次語の値評価結果は、辞書型のオブジェクトでなければなりません。 また、辞書は以下に述べるようにしてスライスリストから生成された キーによってインデクス指定できなければなりません。 スライスリストに少なくとも一つのカンマが含まれている場合、 キーは各スライス要素を値変換したものからなるタプルになります; それ以外の場合、単一のスライス要素自体を値変換したものがキーになります。 一個の式でできたスライス要素の変換は、その式になります。 省略表記スライス要素の変換は、組み込みの Ellipsis オブジェクト になります。適切なスライスの変換は、スライスオブジェクト (3.2 参照) で、start, stop および step 属性は、それぞれ指定した下境界、上境界、および とび幅 (stride) になります。式がない場合には、None に置き換え られます。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。