【python】タプルとは何なのか?

python

pythonを勉強しているとタプルという言葉を見かけることが出てくるはずです。

「リストに似た機能を有している」

「変更を加えることはできない」

といった内容が記載されていると思いますが、いまいちよくわからないという方も多いのではないでしょうか?

今回はそんなタプルについて実際のコードも交えて解説していきたいと思います。

タプルとは?

ではそもそもタプルとは何なのか?

という疑問の方もいると思いますので、そちらの方をまず解決していきたいと思います。

どこの参考書でも書かれているような回答となりますが、「リストと同じような機能を有しているが、リストのように柔軟に変更・削除・追加などといった操作をすることができないモノ」となります。

「えっ!変更ができないってことはリストよりも使い勝手の悪いものじゃん」と考えた方もいるのではないでしょうか?

確かにそういった面もありますが、変更できないことによるメリットも存在します。

変更できないようにすることで、後から間違って変更してバグの原因となるといったことを防いでくれます。

例えばRPGゲームを想像してみてください。

最初に主人公の名前を「TAKERU」としたとします。

この主人公の名前が入る変数は途中で変更を加えることができるものとなっていました。

そしてなぜかモンスターであるゴブリンとバトルした際に、そのモンスターの名前が主人公名に入力されてしまいました。

つまり、モンスターと戦ったことにより主人公の名前は「ゴブリン」となってしまいました。

それ以降ずっと「ゴブリン」という名前で主人公は戦っていくことになります。

そんなの操作するユーザーは絶対嫌ですよね?

こういった思いがけないバグを防ぐために一度初期化した変数は後から改変できないようにする機能を有したモノも必要になってきます。

そのような時にタプルが活躍してくれるというわけです。

一応タプルは後からタプルを連結したり、書き換えたりすることは可能なため下記で紹介した、きっちりとした定数とは異なりますが、使いどころとしては先ほど記載したものを想像していただければ大丈夫です。

【python】変数の基本を解説 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)

因みにタプルの記載方法は下記のようになります。

tuple1=(1,2,3,4,5,6,7,8,9)
tuple2=1,2,3,4,5,6,7,8,9
print(tuple1)
print(tuple2)

リストは[]で要素を囲んでいましたが、タプルは()で要素を囲んで使用します。

また()を記載せずに使用することも可能となっています。

タプルの機能一覧

次にタプルの機能について解説していきます。

初めにタプルは変更・削除・追加が実施できないと記載しましたが、変更と追加は少し勝手は異なりますが、実施は可能です。

下記の順番で一つづつ解説していきます。

  • タプルの検索
  • タプルの追加
  • タプルの変更
  • タプルの抜き出し

タプルの検索

タプルは下記リスト記事でもご紹介したin演算子を使用することで検索を行うことが可能です。

【python】リストの基本的な使用方法 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)

tuple1='Akita','Shizuoka','Wakayama','Kochi','Kumamoto'
print('Kochi' in tuple1)

上記のようにKochiを検索することでTrueという結果が返ってきます。

検索したい要素が含まれているかどうかをTrue、Falseで判定してくれます。

タプルの追加

タプルでは要素の追加はできませんが、タプルにタプルを追加することは可能です。

イメージとしては電車の車両に人をこれ以上乗せることはできないけれど、人がすでに乗っている車両を連結させることは可能という感じです。

【使用方法】
tuple1='Akita','Shizuoka','Wakayama','Kochi','Kumamoto'
tuple2=(1,2,3,4,5,6,7,8,9)
tuple3=tuple1+tuple2
print(tuple3)
【実行結果】
('Akita', 'Shizuoka', 'Wakayama', 'Kochi', 'Kumamoto', 1, 2, 3, 4, 5, 6, 7, 8, 9)

タプルの要素のデータ型は異なっても連結は可能です。

タプルの変更

タプル変数を後から修正すということはできません。

しかし再度初期化を実施することは可能です。

【使用方法】
tuple1=(1,2,3,4,5,6,7,8,9)
print(tuple1)
tuple1=(100,2,3,4,5,6,7,8,9)
print(tuple1)
【実行結果】
(1, 2, 3, 4, 5, 6, 7, 8, 9)
(100, 2, 3, 4, 5, 6, 7, 8, 9)

少し操作は大変ですが、疑似的に要素の変更は可能となっています。

タプルの抜き出し

次にタプル変数から指定範囲内の要素を抜くという操作について解説します。

下記リストの記事でも解説しましたが、スライスという機能を使用することで部分的に要素を抜き出すことが可能となります。

【python】リストの基本的な使用方法 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)

構文としては下記のようになります。

切り取り後のタプルを入れる変数=切り取り前の変数[初期インデックス:終了インデックス-1:ステップ数]

実際に使用した結果が下記です。

【使用方法】
tuple1='Akita','Shizuoka','Wakayama','Kochi','Kumamoto'
tuple2=tuple1[1:3:1]
print(tuple2)
【実行結果】
('Shizuoka', 'Wakayama')

タプルは配列の要素と同じように初期インデックスは0から始まりますので、そこは気を付けてください。

タプル応用編

ここではタプルの応用的に使用方法をご紹介します。

要素が一つだけのタプル

まず解説するのは要素が一つだけのタプルを作成する場合です。

多くの方は下記のように記載することをイメージされるのではないでしょうか?

tuple1=(10)

しかしこの方法でタプルの変数を作成することはできません。

記載方法としては下記のようになります。

tuple1=(10,)

コンマをつけずに使用すると下記の通りint型の変数となります。

tuple1=(10)
print(type(tuple1))
【実行結果】
<class 'int'>

コロンをつけることで見た目は少し悪いですが、タプル型の変数を作成することができます。

tuple()関数、list()関数

ここまでタプルについて解説してきましたが、それでも要素を変更・削除したいという方もいるかと思います。

そのような場合には一度リスト型に変更して、そこで修正作業実施後に再度タプル型に戻すという解決方法があります。

【使用方法】
tuple1='Akita','Shizuoka','Wakayama','Kochi','Kumamoto'
print(tuple1)
tuple2=list(tuple1)
tuple2[2]='Mie'
print(tuple2)
tuple3=tuple(tuple2)
print(tuple3)
【実行結果】
('Akita', 'Shizuoka', 'Wakayama', 'Kochi', 'Kumamoto')
['Akita', 'Shizuoka', 'Mie', 'Kochi', 'Kumamoto']
('Akita', 'Shizuoka', 'Mie', 'Kochi', 'Kumamoto')

少し手間はかかりますが、このようにタプル→リストへ変換してくれるlist()関数、リスト→タプルへ変換してくれるtuple()関数を使用することでタプルの編集が可能となります。

まとめ

この記事ではpythonのタプルについて解説してきました。

  • タプルとは?
  • タプルの機能一覧
  • タプル応用編

タプルはリストに比べて機能がかなり制限されていますが、その分途中で値が変わることがないというメリットも存在します。

ぜひリスト、辞書等の学習と一緒にタプルも覚えてみてください。

以上で今回の記事は終了となります。

コメント

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