【Python tuple】タプルの使い方やリストとの違いについて解説

Pythonのtuple(タプル)とはなにか?
タプルの使い方やリストとの違いについて知りたい
タプルの値を取得する方法について知りたい

tuple(タプル)はリストによく似ていますが、Pythonのスキルを上げるためには欠かせない技術になります。この記事では、Pythonにおけるタプルについて基本的な使い方からタプルの比較や検索など応用的な方法について網羅的に解説していきます。

この記事はこんな人のために書きました

  • タプルの使い方やリストとの違いについて知りたい方
  • タプルの使い方について理解しておきたい方

Pythonのタプルとは

タプル(tuple)はプログラミング初心者の方は馴染みのない言葉なので戸惑うかもしれません。タプルとは、データ構造の一つでリストと同じように複数の値を持つことができます。

リストについてはこちらの記事で詳しく解説しているのでぜひご覧ください。

【Python入門】listの使い方とメソッドまとめ
更新日 : 2020年5月21日

リストとタプルの違いについて、こちらのサンプルコードを見てみましょう。

# リスト
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 入門完全攻略ガイド

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

本多 農

関西在住のITエンジニアです。普通の会社に勤務しながら、侍エンジニアのインストラクター、ライターとして活動しています。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー