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
このようにタプルの値はイミュータブルなので、変更することができません。
コメント