12.1 インデックス範囲
サブタプルを取得するコードは、サブリストを取得するコードと同じように見えるよ。 その意味で、タプルはリストにすごく似てる感じだね。内容を重複させたくはないけど、復習は大事だしね…
サブタプルを取得する、つまりslicingでは、タプルの一部を取り出して新しいタプルを作れるよ。 この操作は、タプルに保存されているデータの特定の部分を操作したいときなんかに特に便利だね。
スライスの構文
スライスは角括弧を使って作るよ。その中に開始インデックスと終わりインデックスをコロンで区切って指定するんだ。 開始インデックスを指定しない場合、スライスは最初の要素から始まる。終わりインデックスを指定しない場合、スライスはタプルの最後まで続くよ。
タプルのスライスは次の構文を使って取得できる: tuple[start:stop:step] ここで、
-
start
— 開始インデックス(含む) -
stop
— 終了インデックス(含まない) -
step
— 要素を選択するステップ
例:
my_tuple = (0, 1, 2, 3, 4, 5)
sub_tuple = my_tuple[1:4] # インデックス1から3の要素を取得
print(sub_tuple) # (1, 2, 3)が出力される
sub_tuple_with_step = my_tuple[0:6:2] # 0から5までの各2番目の要素を取得
print(sub_tuple_with_step) # (0, 2, 4)が出力される
start
を指定しない場合、デフォルトでは0に設定される。stop
を指定しない場合、len(tuple)
になるよ。step
はデフォルトで1だね。
例:
# 0から5までの要素を含むタプルを作成
my_tuple = (0, 1, 2, 3, 4, 5)
# 元のタプルの2番目の要素から新しいタプルを作成
sub_tuple = my_tuple[1:]
print(sub_tuple) # 出力: (1, 2, 3, 4, 5)
# 元のタプルの最初から4番目の要素(インデックス4)までを含み、ステップ1(デフォルト)で新しいタプルを作成
sub_tuple_with_step = my_tuple[:5]
print(sub_tuple_with_step) # 出力: (0, 1, 2, 3, 4)
12.2 負のインデックス
Pythonでの負のインデックスは-1から始まるよ。これはリスト(またはタプル)の最後の要素を意味するんだ。 -2は後ろから二番目の要素を指すし、以下同様だね。 負のインデックスを使うと、タプルの末尾の要素に簡単にアクセスできるし、開始位置を計算する必要もないから便利だね。
使い方の例
負のインデックスを使ったスライス例を見てみよう。例えば、次のようなタプルがあるとするよ:
my_tuple = (10, 20, 30, 40, 50, 60, 70, 80)
タプルの末尾から中間部分までの要素を含むサブタプルを取得するには、負のインデックスを使うことができるんだ。
sub_tuple = my_tuple[-3:-1]
print(sub_tuple) # (60, 70)が出力される
つまり、my_tuple[-3:-1]
はインデックス-3
(後ろから3番目)から-1
(最後の要素を含まない)までの要素を選択して、(60, 70) というタプルを作成するんだね。
タプルの最後の要素を取得:
my_tuple = (10, 20, 30, 40, 50)
last_element = my_tuple[-1]
print(last_element) # 50が出力される
このように、my_tuple[-1]
はタプルの最後の要素を常に返してくれるよ。タプルの要素数がわからない場合にはすごく便利だね。
タプルの要素を逆順に並べ替え:
my_tuple = (10, 20, 30, 40, 50)
reversed_tuple = my_tuple[::-1]
print(reversed_tuple) # (50, 40, 30, 20, 10)が出力される
スライス::-1
を使えば、タプルの要素の順序を簡単かつ効率的に逆順にすることができて、新しい逆順タプルを作成できるよ。
12.3 タプルに要素があるか確認
タプルに特定の要素があるか確認するのはよく使う操作だね。
これは演算子in
を使えばできるよ。この演算子は、要素がタプルに存在する場合はTrueを返し、そうでない場合はFalseを返すんだ。
in
演算子の使い方
in
演算子は、要素の存在を確認するためのシンプルで直感的な方法だよ:
my_tuple = (1, 2, 3, 4, 5)
element = 3
if element in my_tuple:
print(f"{element}はタプルに含まれています。")
else:
print(f"{element}はタプルに含まれていません。")
要素が含まれていないことを確認:
タプルに要素が含まれていないことを確認したい場合は、not in
構文を使えばOK:
names = ('Alice', 'Bob', 'Charlie')
search_name = 'Alice'
if search_name not in names:
print(f"{search_name}はタプルに含まれていません。")
else:
print(f"{search_name}はタプルに含まれています。")
リストとほとんど変わらない感じだね。これがPythonの汎用性とシンプルさだよ。
GO TO FULL VERSION