10.1 タプルとその特性
タプルはPythonの4つの組み込みコレクションタイプの1つだよ。
知ってる通り、Pythonにはオブジェクトのグループを保存するためのいくつかの組み込みデータ型があるよね。list
— リスト、 tuple
— タプル、set
— セット、dictionary
— 辞書。今日はその中でも簡単な方であるタプルについて見ていくよ。
タプル (tuple)
は複数の要素を保存することができるよ。各要素には順番があって、だからタプルは順序付き(ordered)って言われるんだ。リストと似てるね。
タプルは変更できないよ — 一度作られると不変で、そのためプログラム内で変更しないデータを保存するのに最適だね。この特性が不変性 (immutable)。
重複については — タプルには同じ要素を何度も保存できるんだ — allow duplicates。これもリストとよく似てるよね。
覚えておいてね。タプルは不変のリストみたいなもので、角カッコ []
の代わりに丸カッコ ()
を使うみたいな感じ。
10.2 タプルの作成
タプルは不変の要素のシーケンスで、いろんな方法で作成できるんだ。ここではよく使われる方法を見てみよう:
直接宣言:
タプルは丸カッコ () と要素を区切るためのカンマを用いて直接作成できるよ。
tuple1 = (1, 2, 3)
tuple2 = ("apple", "banana", "cherry", "apple", "cherry")
tuple3 = (1, "apple", True)
カッコなし:
Pythonではカッコを使わずにカンマで要素を区切ってタプルを作成することもできるよ。
tuple1 = 1, 2, 3
tuple2 = "apple", "banana", "cherry", "apple", "cherry"
tuple3 = 1, "apple", True
一要素のタプル:
一要素だけのタプルを作成するには、その要素の後にカンマを置く必要がある
。
tuple1 = (1,)
tuple2 = ("apple",)
tuple3 = (True,)
tuple()
の利用:
tuple()
関数 は反復可能なオブジェクトをタプルに変換するんだ。これにはリスト、文字列、その他の反復可能オブジェクトが含まれるよ。
list_to_tuple = tuple([1, 2, 3])
10.3 タプルの要素のアンパック
タプルで作業する際に、複数の要素を1つのタプルとしてパックしたり、タプルを複数の変数にアンパックすることができるんだ。これはコードをシンプルにしてくれるよ:
基本的なアンパック
タプルを変数にアンパックする例:
my_tuple = (1, 2, 3)
x, y, z = my_tuple
ここで変数 x
, y
, z
はそれぞれ 1
, 2
, 3
の値を取得するよ。
拡張アンパック
Pythonは拡張アンパックもサポートしていて、*
を使ってタプルの一部をリストに取り出すことができるんだ:
a, *b, c = (1, 2, 3, 4, 5) # a = 1, b = [2, 3, 4], c = 5
この例では a
と c
は最初と最後の値を取得して、b
はそれ以外の値を含むリストになるよ。
関数での活用
タプルのアンパックは関数にパラメータを渡す際によく使われるよ。特に、関数が可変長の引数を受け取る時や、引数が事前にタプルやリストにパックされている場合に便利だね:
def func(a, b, c):
print(a, b, c)
values = (1, 2, 3)
func(*values)
利用のポイント
タプルのアンパックではタプルの要素数と変数の数を正確に一致させる必要があるよ。さもないとエラーが発生するんだ。でも *
を使って余分な要素を集めることで、データの変化に柔軟に対応できるよ。
10.4 メソッドの一覧
タプルは不変なオブジェクトだから、あまりメソッドを持っていないんだ。全部で2つだけ 😄
count(x)
関数:
タプル内で x
が出現する回数を返すんだ。特定の要素数を数えるのに便利だよ。
t = (1, 2, 3, 2, 4, 2)
print(t.count(2)) # 3を出力する
index(x)
関数:
タプル内の要素 x
の最初の出現位置のインデックスを返すんだ。もし要素が見つからない場合は ValueError
を発生させるよ。
t = (1, 2, 3, 2, 4, 2)
print(t.index(3)) # 2を出力する
これがタプルのメソッドの全てだけど、何もできないってわけじゃないんだ。ただちょっとだけ工夫が必要なだけさ。
GO TO FULL VERSION