【Python】tuple(タプル)とは?使い方について解説!
tuple(タプル)とは一度セットした要素を書き換えることができない(イミュータブルな)データの集まりになります。
その為、タプルは要素の順番を変えられたくない場合や集めたデータに変更が出ない場合などで使用されます。
タプルは外見上だとリストとよく似ており、リストは角かっこ「[]」の中にカンマ区切りで要素を並べて格納するのに比べて、タプルでは丸かっこ「()」の中にカンマ区切りで要素を並べて格納します。
しかし、リストと似ているからタプルも同じように使用できると思ったら危険です。
リストで操作できても、タプルでは操作できないことがあります。
今回はPythonのtuple(タプル)の使い方について以下の内容で解説していきます。
⚫︎ tuple(タプル)とは
⚫︎ tuple(タプル)の基本的な使い方
⚫︎ tuple(タプル)の応用的な使い方
⚫︎ tuple(タプル)で使用できるメソッド
⚫︎ tuple(タプル)とliist(リスト)の違い
目次
tuple(タプル)とは
tuple(タプル)とは一度セットした要素を書き換えることができない(イミュータブルな)データのことをいいます。
tuple(タプル)の書き方
tuple(タプル)の構文は下記となります。
1 2 3 |
タプル名 = (要素1, 要素2, ...) タプル名 = 要素1, 要素2, ... |
()の中で要素ごとにカンマ(,)で区切って書くことで作成します。
また、()を省略して直接、要素を書いて作成することもできます。
そして、多次元のタプルを作成する場合は下記のようになります。
1 2 3 |
タプル名 = ((要素1, 要素2),(要素3, 要素4,)), ((要素5, 要素6), (要素7, 要素8)) タプル名 = (((要素1, 要素2),((要素3, 要素4)), ((要素5, 要素6), (要素7, 要素8))) |
tuple(タプル)の基本的な使い方
tuple(タプル)の基本的な使い方を紹介します。
tuple(タプル)に要素を格納する
tuple(タプル)に要素を格納できます。
例
1 2 3 4 5 6 7 8 9 |
tuple1 = ("ライオン", "ゴリラ", "くま", "キリン", "ぞう", "とら" , "しまうま") tuple2 = 1, 2, 3, 4, 5, 6, 7 tuple3 = ((1, 2), (3, 4, 5, 6, 7), (8, 9, 10), (11, 12)) tuple4 = ((("ライオン"), ("ゴリラ")), (("くま", "キリン"),("さる","ワシ")),(("チーター","しまうま"))) print(tuple1) print(tuple2) print(tuple3) print(tuple4) |
出力結果
(‘ライオン’, ‘ゴリラ’, ‘くま’, ‘キリン’, ‘ぞう’, ‘とら’, ‘しまうま’)
(1, 2, 3, 4, 5, 6, 7)
((1, 2), (3, 4, 5, 6, 7), (8, 9, 10), (11, 12))
((‘ライオン’, ‘ゴリラ’), ((‘くま’, ‘キリン’), (‘さる’, ‘ワシ’)), (‘チーター’, ‘しまうま’))
tuple(タプル)に要素を格納しています。
tuple(タプル)の要素を取得する
tuple(タプル)は格納した要素を取得することができます。
タプルの要素を取り出す方法についてはこちらをご参考ください。
tuple(タプル)の応用的な使い方
tuple(タプル)の応用的な使い方を紹介していきます。
tuple(タプル)の要素を検索する
tuple(タプル)の要素を検索するにはin演算子を使用します。
in演算子を使うことで、タプルの要素を検索することができ、trueかfalseを返します。
例
1 2 3 4 5 6 |
tuple1 = ("ライオン", "ゴリラ", "くま", "キリン", "ぞう", "とら" , "しまうま") tuple2 = 1, 2, 3, 4, 5, 6, 7 print("猿" in tuple1) print(6 in tuple2) |
出力結果
False
True
tuple(タプル)同士を比較する
タプル同士を比較するには比較演算子(==)を使用します。
比較演算子(==)を使用することで、タプルのすべての要素を比較することができ、trueかfalseを返します。
例
1 2 3 4 5 6 7 8 9 |
tuple1 = ("ライオン", "ゴリラ", "くま", "キリン", "ぞう", "とら" , "しまうま") tuple1_1 = ("ライオン", "ゴリラ", "くま", "キリン", "ぞう", "とら" , "しまうま") tuple2 = 1, 2, 3, 4, 5, 6, 7, tuple2_1 = 1, 2, 3, 4, 5, 6, 8, print(tuple1 == tuple1_1) print(tuple2 == tuple2_1) |
出力結果
True
False
tuple(タプル)の中にタプルを追加する
tuple(タプル)の中にタプルを追加するには多重になっているタプルに+演算子で連結することで追加することができます。
例
1 2 3 4 5 6 |
tuple1 = (("ライオン", "ゴリラ", "くま", "キリン"), ( "ぞう", "とら" , "しまうま")) tuple2 = (1, 2, 3, 4, 5, 6, 7) tuple3 = tuple1 + tuple2 print(tuple3) |
出力結果
((‘ライオン’, ‘ゴリラ’, ‘くま’, ‘キリン’), (‘ぞう’, ‘とら’, ‘しまうま’), 1, 2, 3, 4, 5, 6, 7)
tuple(タプル)の要素を操作する
tuple(タプル)は基本、格納した要素を直接的に操作することはできませんが、間接的に操作することはできます。
タプルの要素を操作する方法についてはこちらをご参考ください。
tuple(タプル)で使用できるメソッド
tuple(タプル)で使用できるメソッドを紹介します。
tuple(タプル)の要素の合計を求める
tuple(タプル)の要素の合計を求めるにはsum()を使用します。
例
1 2 3 4 5 6 7 8 9 10 |
tuple1 = (1, 2, 3, 4, 5, 6, 7) tuple2 = 8, 9, 10, 11, 12, 13 tuple3 = ((1, 2), (3, 4, 5, 6, 7), (8, 9, 10), (11, 12)) tuple4 = (((1, 2, 3), (4, 5 ,6)), ((10, 11, 12), (13, 14))) print("合計値") print(sum(tuple1)) print(sum(tuple2)) print(sum(tuple3[1])) print(sum(tuple4[0][1])) |
出力結果
合計値
28
63
25
15
sum()によって要素の合計を求めることができます。
しかし、string型のタプルには使用できません。
tuple(タプル)の要素をソートする
tuple(タプル)の要素をソートするにはsorted()を使用します。
sorted()でtuple(タプル)の要素をソートする方法についてはこちらをご参考ください。
tuple(タプル)の要素の最大値/最小値を取得する
tuple(タプル)の要素の最大値/最小値を取得する場合にはmax()/min()を使用します。
max()/min()について詳しく知りたい場合はこちらをご参考ください。
tuple(タプル)の要素の数をカウントする
tuple(タプル)の要素の数をカウントする場合にはlen()を使用します。
例
1 2 3 4 5 6 7 8 9 |
tuple1 = (451, 2, 377, 55, 67, 778, 1000, 589, 66, 745, 34, 56) tuple2 = ((451, 2), (377, 55, 67, 778, 1000), (589, 66, 745), (34, 56)) tuple3 = ((("ライオン"), ("ゴリラ")), (("くま", "キリン"),("さる","ワシ")),(("チーター","しまうま"))) print("一次元タプルの数をカウント" + str(len(tuple1))) print("二次元タプルの数をカウント得" + str(len(tuple2))) print("二次元タプル内の一次元タプルの数をカウント" + str(len(tuple2[1]))) print("三次元のタプルの数をカウント" + str(len(tuple3))) print("三次元のタプル一次元タプルの数をカウント" + str(len(tuple3[1][1]))) |
出力結果
一次元タプルの数をカウント12
二次元タプルの数をカウント得4
二次元タプル内の一次元タプルの数をカウント5
三次元のタプルの数をカウント3
三次元のタプル一次元タプルの数をカウント2
len()によってtuple(タプル)の要素の数をカウントしています。
他のデータ型をtuple(タプル)に変更する
リストや辞書などのデータ型をtuple(タプル)に変更するにはtuple()を使用します。
例
1 2 3 4 5 6 7 8 9 10 |
tuple1 = ["ライオン", "ゴリラ", "くま", "キリン", "しまうま"] tuple2 = {'1':'リンゴ', '2': 'トマト', '3': 'イチゴ'} print("タプル変更前") print(tuple1) print(tuple2) print("タプル変更後") print(tuple(tuple1)) print(tuple(tuple2)) |
出力結果
タプル変更前
[‘ライオン’, ‘ゴリラ’, ‘くま’, ‘キリン’, ‘しまうま’]
{‘1’: ‘リンゴ’, ‘2’: ‘トマト’, ‘3’: ‘イチゴ’}
タプル変更後
(‘ライオン’, ‘ゴリラ’, ‘くま’, ‘キリン’, ‘しまうま’)
(‘1’, ‘2’, ‘3’)
tuple()によってリストや辞書をタプルに変換しています。
辞書の場合はキーの値がタプル化されます。
tuple(タプル)の要素とインデックスを取得する
tuple(タプル)の要素とインデックスを取得するにはenumerate()を使用します。
Pythonのenumerate()についてはこちらをご参考ください。
例
1 2 3 4 5 6 7 8 9 10 |
tuple1 = (451, 2, 377, 55, 67, 778, 1000, 589, 66, 745, 34, 56) tuple2 = ((451, 2), (377, 55, 67, 778, 1000), (589, 66, 745), (34, 56)) tuple3 = ((("ライオン"), ("ゴリラ")), (("くま", "キリン"),("さる","ワシ")),(("チーター","しまうま"))) print("一次元のタプルの要素とインデックスを取得") print(tuple(enumerate(tuple1))) print("二次元のタプルの要素とインデックスを取得") print(tuple(enumerate(tuple2[1]))) print("三次元のタプルの要素とインデックスを取得") print(tuple(enumerate(tuple3[1][1]))) |
出力結果
一次元のタプルの要素の最大値を取得
((0, 451), (1, 2), (2, 377), (3, 55), (4, 67), (5, 778), (6, 1000), (7, 589), (8, 66), (9, 745), (10, 34), (11, 56))
二次元のタプルの要素の最大値を取得
((0, 377), (1, 55), (2, 67), (3, 778), (4, 1000))
三次元のタプルの要素の最大値を取得
((0, ‘さる’), (1, ‘ワシ’))
enumerate()によって要素とインデックスを取得しています。
多次元のタプルの場合、タプル名をそのまま指定しても要素とインデックスを取得しますが、インデックスを指定すると、一つひとつの要素をインデックスと一緒に取得しています。
tuple(タプル)とlist(リスト)の違い
tuple(タプル)とlist(リスト)は形がとても類似しています。
しかし、タプルとリストは処理を行う場合に大きな違いがあります。
その違いとは「リストは変更ができるが、タプルは変更ができない」ということです。
要素を追加・変更・削除する変更ができるリストに対して、タプルは一度セットした要素を追加・変更・削除することができません。
Pythonのリスト(list)について詳しく知りたい場合はこちらをご参照ください。
例えば、リスト、タプルの中にある要素を変更してみます。
リストの例
1 2 3 4 5 |
list1 = ["ライオン", "ゴリラ", "くま", "キリン", "しまうま"] list1[0] = "かば" print(list1) |
出力結果
[‘かば’, ‘ゴリラ’, ‘くま’, ‘キリン’, ‘しまうま’]
リストでは一度定義したリストの中の要素を変更することができます。
続いて、タプルで行ってみると
タプルの例
1 2 3 4 5 6 |
tuple1 = ("ライオン", "ゴリラ", "くま", "キリン", "しまうま") tuple1[0] = "かば" print(tuple1) |
出力結果
TypeError: ‘tuple’ object does not support item assignment
このように一度定義したタプルの要素を操作することができません。
しかし、要素の値を間違えて書き換えられる危険がないことはタプルのメリットです。
また、リストと比べて、パフォーマンスの点ではタプルの方が有利となっています。
今回のポイント
tuple(タプル)はイミュータブルなデータ型である
⚫︎ tuple(タプル)は一度セットした要素を書き換えることができないデータの集まりである
⚫︎ tuple(タプル)は要素を格納したり、格納した要素を取得することができる
⚫︎ tuple(タプル)の要素を検索するにはin演算子を使用する
⚫︎ tuple(タプル)同士を比較するには比較演算子(==)を使用します
⚫︎ tuple(タプル)の中にタプルを追加するには+演算子でタプルを連結する
⚫︎ tuple(タプル)は直接操作することはできないが間接的に操作できる
⚫︎ tuple(タプル)の要素の合計を求めるにはsum()を使用する
⚫︎ tuple(タプル)の要素をソートするにはsorted()を使用する
⚫︎ tuple(タプル)の要素の最大値を取得するにはmax()を使用する
⚫︎ tuple(タプル)の要素の最小値を取得するにはmin()を使用する
⚫︎ tuple(タプル)の要素の数をカウントするにはlen()を使用する
⚫︎ 他のデータ型をtuple(タプル)に変更するにはtuple()を使用する
⚫︎ tuple(タプル)の要素とインデックスを取得するにはenumerate()を使用する
⚫︎ tuple(タプル)とlist(リスト)の違いは設定したデータを変更できるかできないかである
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。