【Python入門】タプルについてのまとめ!(取得やアンパックなど)

Python Python

Pythonのタプル(Tuple)について、まとめてみました。
タプルについて解説をした後に、タプルを操作して動作を確認しています。

載せているコードはPythonのバージョン3.11.0で動作を確認しています。

タプルについて

Pythonのタプルは、リストと同じようにさまざまな値を格納することができるデータ型です。

リストと違いタプルはイミュータブル(変更不可)になります。
リストはミュータブル(変更可能)です。

タプルに入れた値を追加や削除、更新することはできません。
つまり、タプルは変更不可能な定数のリストのように使うことができます。

タプルを作るときには、下記のように丸括弧で囲って値を並べます。

fruits = ('apple', 'banana', 'peach')

print(type(fruits)) # <class 'tuple'>

上記では、fruits変数にタプルを作成しました。
3つの文字列を入れたタプルです。
print関数で型を出力すると、タプル型になっていることが確認できます。

タプルのパックとアンパック

タプルのパックとアンパックについてです。

パックする

タプルを作成することを「パックする」ということがあります。
値をタプルにまとめるためです。

通常は先ほどと同じように、下記のようにパックします。

scores = (30, 89, 50, 70, 66)

print(type(scores)) # <class 'tuple'>

丸括弧を省略して、作ることもできます。

scores = 30, 89, 50, 70, 66

print(type(scores)) # <class 'tuple'>

アンパックする

タプルのアンパックは、タプルの値を変数に展開することです。
下記のようにして、タプルの値を展開できます。

scores = (30, 89, 50)

score1, score2, score3 = scores
print(score1) # 30
print(score2) # 89
print(score3) # 50

scores変数にタプルを作っています。

その次の処理で、タプルを展開しています。
タプルに入っている値が、ひとつずつ左の変数に展開されます。

それぞれの変数をprint関数で出力すると、展開されていることが確認できました。

タプルの要素を取得する

タプルの要素を取得する方法について書いています。

値を取得する

タプルの値を取得するときは、リストと同じように要素番号を指定して取得することができます。

fruits = ('apple', 'grape', 'banana')

print(fruits[1]) # grape

fruits変数に文字列を3つ入れたタプルを作成しました。
次の処理で、タプルの値を取り出しています。

鉤括弧で「[1]」とすることで、1番目の値を取得できます。
0番目から要素を数えるので、1番目の値は「grape」になります。

範囲を取得する

リストと同じように、要素番号で範囲を指定して、値を取り出すことも可能です。

fruits = ('apple', 'grape', 'banana', 'peach')

print(fruits[1:3]) # ('grape', 'banana')

fruits変数に文字列を4つ入れて、タプルを作りました。
次の処理で、作成したタプルの1番目の要素から、3番目までを指定して要素を取得しています。

結果、3番目の手前の要素までが取得できます。
出力して確認すると、「('grape', 'banana')」というように切り出した値がタプルの形で返ってきました。

負数を要素番号に使う

負数を指定することで、後ろから要素を取得することができます。

fruits = ('apple', 'grape', 'banana', 'peach')

print(fruits[-1]) # peach

先ほどのプログラムを少し変更して、fruits変数に-1を指定して値を取得しました。
こうすると、タプルの後ろの方から値を取得することができます。

結果を確認すると、-1番目は「peach」が返されます。
同じように、例えば-3番目を指定した場合には「grape」になります。

タプルの要素数を取得する

タプルの要素数を取得するには、len関数を使うと良いです。

fruits = ('apple', 'grape', 'banana', 'peach')

print(len(fruits)) # 4

4つの文字列が入った、タプル型のfruits変数があります。
次の処理で、要素数を数えています。

len関数にタプルを渡すことで、要素数が返ってきます。
print関数で出力すると、「4」が返ってきていることが確認できました。

タプルを結合する

タプルを結合するときには、+演算子を使うと良いです。

fruits1 = ('apple', 'banana')
fruits2 = ('orange', 'grape', 'banana')

fruits = fruits1 + fruits2
print(fruits) # ('apple', 'banana', 'orange', 'grape', 'banana')

fruits1変数に文字列2つのタプルを作りました。
fruits2変数は文字列3つのタプルです。

2つのタプルを+演算子で結合しています。
結果2つのタプルが結合されて、「('apple', 'banana', 'orange', 'grape', 'banana')」となります。

タプルのメソッド

タプルから呼び出せるメソッドについてです。
指定値の要素数を取得するcountメソッドと、要素の場所を取得するindexメソッドがあります。

指定値の要素数を取得する

countメソッドを使うと、指定した値がいくつ含まれているか確認できます。

colors = ('red', 'blue', 'green', 'red', 'black', 'red')

print(colors.count('red')) # 3

最初にcolors変数に、6つの文字列でタプルを作成しました。
次の処理で、countメソッドを使って「red」がいくつ含まれているか確認しています。

countメソッドに渡しているのは、数えたい要素の値です。
print関数で出力すると、「3」が返ってきて、含まれている要素数が確認できました。

要素の要素番号を取得する

要素の要素番号を取得するには、indexメソッドを呼び出すと良いです。

colors = ('red', 'blue', 'green', 'red', 'black', 'red')

print(colors.index('green')) # 2

先ほどと同じ、colors変数のタプルを使っています。
次の処理で、タプルからindexメソッドを呼び出しています。

渡しているのは、要素番号を取得したい要素です。
今回はgreenを渡しているので、要素番号の「2」が返ってきました。

指定した要素が複数ある場合には、最初に見つかった位置が返ってきます。

タプルをループする

タプルはfor文を使うことで、ループして値を取得することが可能です。

fruits = ('apple', 'grape', 'banana', 'peach')

for fruit in fruits:
    print(fruit)

fruits変数に、4つの文字列でタプルを作りました。

次の処理で、for文を使ってループしています。
fruits変数をinの右側に設定しています。
inの左側のfruit変数にはループ毎にタプルの要素が設定されます。

print関数で確認すると、下記のようにひとつずつ値が出力されました。

apple
grape
banana
peach

タプルの値を変更しようとするとエラー

タプルの値を下記のように更新しようとするとエラーになります。

fruits = ('apple', 'banana', 'grape')
fruits[1] = 'orange'

print(fruits)

fruits変数に、3つの文字列でタプルを作成しました。
fruits変数の1番目の値を更新しようとすると、下記のようにエラーになります。

TypeError: 'tuple' object does not support item assignment

このようにタプルの値はイミュータブルなので、変更することができません。

コメント

タイトルとURLをコピーしました