タプルの使い方やリストとの違いについて知りたい
タプルの値を取得する方法について知りたい
tuple(タプル)はリストによく似ていますが、Pythonのスキルを上げるためには欠かせない技術になります。この記事では、Pythonにおけるタプルについて基本的な使い方からタプルの比較や検索など応用的な方法について網羅的に解説していきます。
この記事はこんな人のために書きました
- タプルの使い方やリストとの違いについて知りたい方
- タプルの使い方について理解しておきたい方
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
Pythonのタプルとは
タプル(tuple)はプログラミング初心者の方は馴染みのない言葉なので戸惑うかもしれません。タプルとは、データ構造の一つでリストと同じように複数の値を持つことができます。
リストについてはこちらの記事で詳しく解説しているのでぜひご覧ください。
リストとタプルの違いについて、こちらのサンプルコードを見てみましょう。
# リスト list_sample = [1, 2, 3, 4, 5] # タプル tuple_sample = (1, 2, 3, 4, 5)
タプルは「()」で囲わなくても構いません。
tuple_sample = 1, 2, 3, 4, 5
それでもリストとタプルを区別するために、「()」で囲うことをおすすめします!
また、リストとタプルにはこのような違いがあります。
- イミュータブル(変更ができない)
- 実行速度が少し早い
リストには要素を追加したり、要素を消したりすることもできますが、タプルではできません。
タプルの基本的な使い方
ここからはタプルを実際に使ってみましょう。この章では、
- 要素の追加
- 要素の削除
- 要素の変更
などのタプルの使い方を解説します。先程のリストの記事と併せて読んでみると、理解が深まりますよ。
要素を追加する
タイトルを見て不思議に思った方もいるかもしれません。タプルはイミュータブルなので一度作ると変更ができません。でも別のタプルを作って連結をすることで、要素の追加のような振る舞いにすることはできます。
tuple_sample1 = (1, 2, 3, 4, 5) tuple_sample2 = tuple_sample1 + (6, 7) print(tuple_sample2)
実行結果
(1, 2, 3, 4, 5, 6, 7)
要素を削除する
タプルは変更ができないので要素を削除する事もできません。ですが、スライスという機能を使って部分的に取り出したタプルを作ることはできます。
スライスを使うと、「タプル名[開始インデックス:終了インデックス:ステップ]」の書式で記述をして、指定した開始から終了の一つ前までをステップ数ごとに抜き出す事ができます。
少し難しく感じられるかもしれませんが、サンプルコードを見てみましょう。
tuple_sample1 = (1, 2, 3, 4, 5) tuple_sample2 = tuple_sample1[2:4:1] print(tuple_sample2)
実行結果
(3, 4)
tuple_sample1のタプルから、インデックス2(3番目)からインデックス4(4番目まで)を1つずつ(1ステップずつ)、抜き出してtuple_sample2を作りました。タプルのインデックスもリストと同じように0から数えることに気をつけましょう(Pythonはインデックスが0スタートです。)。
要素を変更する
要素の変更も基本的にはできません。リストと同じようにやってみると、このような結果になります。
tuple_sample = (1, 2, 3, 4, 5) tuple_sample[2] = 10
実行結果
TypeError: 'tuple' object does not support item assignment
エラーメッセージが返ってきましたね。要約すると、「要素の変更は出来ません」というメッセージが返ってきます。
タプルは変更ができないので、新しく作り直すか、リストを使う方法しかありません。一度作ってしまえば要素は変わらないような使いみちであれば、間違って書き換える心配のないタプルが適しています。
タプルの応用的な使い方
とても使いみちが狭いように感じるタプルですが、タプル同士を比較したり、要素を検索することは出来ます。サンプルコードとともに、見てみましょう。
タプルを比較する
タプル同士を比較することが出来ます。難しいことは考えずに比較演算子を使うと、すべての要素を比較することができます。
tuple_sample1 = (1, 2, 3, 4, 5) tuple_sample2 = (1, 2, 3, 4, 5) print(tuple_sample1 == tuple_sample2)
実行結果
True
その他、「!=」で要素が異なるかどうか、「<」や「>」ですべての要素の大小関係を比較することが出来ます。比較演算子を使うと、TrueやFalseのbool値が返ってきます。
タプルを検索する
in演算子を使うことで、タプルの要素を検索することが出来ます。
tuple_sample = (1, 2, 3, 4, 5) print(1 in tuple_sample)
実行結果
True
タプルに1が含まれていたのでTrueが表示されましたね。
for文を使ってタプルを取得する
for文を使ってタプルの要素を取り出すことができます。
tuple_sample = (1, 2, 3, 4, 5) for num in tuple_sample: print(num)
実行結果
1 2 3 4 5
他の言語ではforeachと呼ばれる書き方ですが、Pythonではこれが標準的な書き方になります。
タプルを使うときの注意点
値が1つしか無いタプルを作ることも出来ますが、注意が必要です。例えば、
tuple_sample = (1)
と書いても、タプルとして認識されません。タプルとして認識させるためには、
tuple_sample = (1, )
と、カンマまで書く必要があります。
()内に複数要素がある場合はタプルとして認識されるのですが、一つの場合は、Pythonはただの値か式として認識します。「,」をつけることで、Pythonがタプルと認識します。
まとめ
今回はタプルについて解説しました。タプルは一度作ると変更が出来ません。
しかしリストとの使い分けができるようになると、一歩進んだプログラムを書くことが出来ます。リストとの違いを比較してみると、タプルの使い所が見えてきますよ。
もしタプルについて忘れてしまったら、この記事を読み返して見てください!
なお、今Pythonを学習している方は以下の記事もどうぞ。
はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。
復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。
【Python 入門完全攻略ガイド】