インデックスが範囲外の部分文字列スライス: 双対性と空のシーケンス
Python では、スライス演算子を使用してシーケンスの要素にアクセスします。 'example'[999:9999] のように、予期しない動作が発生する可能性があります。 'example'[9] を使用して個々の要素にインデックスを付けるとエラーが発生しますが、シーケンスの境界外でスライスする場合はエラーが発生しません。
この動作は、インデックスとスライスの基本的な違いに起因します。 'example'[3] などのシーケンスにインデックスを付けると、単一の項目が返されます。ただし、'example'[3:4] などのシーケンスをスライスすると、項目のサブシーケンスが返されます。
'example'[9] など、存在しない要素にインデックスを付ける場合、 item が返されるため、エラーが発生します。対照的に、シーケンスを境界外でスライスすると、空のシーケンスが返されることがあります。これは、長さを超えるインデックスからその長さを超えるインデックス、またはシーケンスの終わりまでのシーケンスのスライスが空のシーケンスであるためです。
これをさらに説明するために、リストを使用した次の動作を考えてみましょう。 :
>>> [0, 1, 2, 3, 4, 5][3] 3 >>> [0, 1, 2, 3, 4, 5][3:4] [3]
この場合、インデックス作成とスライスの違いは明らかです。文字列の場合、Python には文字列の外側に個々の文字という概念がないため、結果は同じように見えます。むしろ、単一の文字は 1 文字の文字列です。
したがって、Python で範囲外のインデックスを使用して部分文字列をスライスしても、意味のある結果 (空のシーケンス) が得られるため、エラーは発生しません。この動作により、さまざまな長さのシーケンスを処理するときに、柔軟かつ簡潔なコーディングが可能になります。
以上がPython が範囲外の部分文字列のスライスに対してエラーを発生させないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。