Python における[:-1]の意味
スライスはプログラミング言語での操作であり、オブジェクトのシーケンスまたはオブジェクトや文字列の配列に対して実行できます。スライスでは、関数とより単純な表記法を使用してデータ構造をスライスし、元のデータ構造のサブストリングまたはサブシーケンス、またはサブ配列を取得します。
Python でのスライス
Python はプログラミング言語であり、スライスもサポートしていることを意味します。Python では、スライスを実行する方法は主に 2つあります。1つ目は slice()
関数を使用し、2つ目はインデックス構文を使用します。
Python で slice()
コンストラクターを使用したのスライス
スライスコンストラクターは、start
、stop
、および step
の 3つの引数を受け入れます。このコンストラクターは、文字列またはオブジェクトの任意のシーケンスを分割するためのスライスオブジェクトを作成します。
start
:これは、スライスを開始する場所からの開始インデックスです。デフォルト値は0
です。stop
:これは、スライスが終了する終了インデックスです。それは強制的な議論です。step
:これは、スライスプロセスのシーケンスを反復処理するときに実行する必要のある増分の量です。デフォルト値は1
です。
このユーティリティをもう少しよく理解するために、いくつかの例を見てみましょう。Python では、-1
が最後のインデックスを表すことに注意してください。また、インデックス作成または反復中に、停止
インデックスは最終結果では考慮されません。操作は、その前のすべてに対して実行されます。
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slices = [
slice(5),
slice(0, -1),
slice(1, -1, 2),
slice(1, 4, 1),
slice(5, -1),
slice(3, -1, 3),
slice(0, 0),
slice(-1, 0, -1),
slice(-5, 5, -3),
]
for i in range(len(slices)):
print(s[slices[i]])
for i in range(len(slices)):
print(a[slices[i]])
出力:
ABCDE
ABCDEFGHIJKLMNOPQRSTUVWXY
BDFHJLNPRTVX
BCD
FGHIJKLMNOPQRSTUVWXY
DGJMPSVY
ZYXWVUTSRQPONMLKJIHGFEDCB
VSPMJG
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 4, 6, 8]
[2, 3, 4]
[6, 7, 8, 9]
[4, 7]
[]
[10, 9, 8, 7, 6, 5, 4, 3, 2]
[]
単一の値が slice()
コンストラクターに渡されると、その値は stop
インデックスに割り当てられることに注意してください。そのため、slice(5)
の場合、出力は ABCDE
として取得されました。
Python でインデックス構文を使用したのスライス
Python では、slice()
コンストラクターを使用してスライスオブジェクトを作成する代わりに、次の構文を使用してスライスを実行できます。
sequence[start:stop:step]
受け入れられる引数は、前者の方法と同じです。本当に変わるのはそれらの書き方です。start
、stop
、および step
のデフォルト値は、それぞれ 0
、-1
、および 1
です。引数をスキップしてデフォルト値を使用できますが、コロン
を記述する必要があることに注意してください。少しよく理解するために、インデックス構文の例をいくつか見てみましょう。
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(s[5])
print(s[:-1])
print(s[0:-1])
print(s[1:-1:2])
print(s[1:4:1])
print(s[5:-1])
print(s[3:-1:3])
print(s[:0])
print(s[-1:0:-1])
print(s[-5:5:-3])
print(a[5])
print(a[:-1])
print(a[0:-1])
print(a[1:-1:2])
print(a[1:4:1])
print(a[5:-1])
print(a[3:-1:3])
print(a[:0])
print(a[-1:0:-1])
print(a[-5:5:-3])
出力:
F
ABCDEFGHIJKLMNOPQRSTUVWXY
ABCDEFGHIJKLMNOPQRSTUVWXY
BDFHJLNPRTVX
BCD
FGHIJKLMNOPQRSTUVWXY
DGJMPSVY
ZYXWVUTSRQPONMLKJIHGFEDCB
VSPMJG
6
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 4, 6, 8]
[2, 3, 4]
[6, 7, 8, 9]
[4, 7]
[]
[10, 9, 8, 7, 6, 5, 4, 3, 2]
[]
Python での [ : -1]
の重要性
ご覧のとおり、この構文はインデックス構文に属しています。[ : -1]
は、最後のシーケンス要素を除くすべてのシーケンス要素を出力します。この概念を理解するためにいくつかの例を見てみましょう。
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(s[:-1])
print(a[:-1])
出力:
ABCDEFGHIJKLMNOPQRSTUVWXY
[1, 2, 3, 4, 5, 6, 7, 8, 9]