<一覧に戻る

タプルとリストの違い

Pythonでプログラミングをする上で、よく登場するデータ構造にリスト(list)とタプル(tuple)があります。 この2つは非常に似ていますが、実は重要な違いがあります。この違いをしっかり理解することで、データの扱い方が大きく変わり、効率的なコードを書くことができるようになります。

今回は、「リストとタプルの違い」を初心者でもわかりやすく解説し、実際のコード例を交えて学んでいきましょう。

リストとタプルの基本的な違い

リストとタプルはどちらも複数の要素をまとめて扱うためのデータ構造です。 しかし、データの変更ができるかどうかという大きな違いがあります。

ミュータブル(可変)とイミュータブル(不変)

リストはミュータブル(mutable)なデータ構造です。 つまり、作成したあとで中身を自由に変更できます。要素の追加・削除、値の更新などが可能です。

一方、タプルはイミュータブル(immutable)です。 これは「一度作ったら中身を変えられない」という意味です。タプルに含まれる要素は、作成後に変更できません。

この違いが、Pythonのコードを書くうえで最も重要なポイントです。

用途の違い

リストは「後から値を追加したい」「順序を変えたい」といったケースに向いています。 例えば、ショッピングカートに商品を追加する場合や、ユーザー入力をどんどん蓄積する場合に使います。

一方でタプルは「変更されては困るデータ」を扱う場合に最適です。 例えば、緯度と経度のペア、RGBカラーコード、固定の設定値などです。 こうしたデータは、後から間違って書き換えられないようにタプルで保持します。

パフォーマンス(速度とメモリ)

タプルは変更不可である分、Python内部の処理が効率化されており、リストよりもメモリ使用量が少なく、処理速度が速い場合があります。 大量の固定データを扱う場合や、パフォーマンスを重視する場面ではタプルを選ぶことが推奨されます。

コードで確認するリストとタプルの違い

ここからは実際のコードを使って、リストとタプルの違いを体感しましょう。

リストの例

# リストの作成
my_list = [1, 2, 3]
print("リスト:", my_list)

# 要素の追加
my_list.append(4)
print("追加後のリスト:", my_list)

# 要素の削除
my_list.pop(0)  # インデックス0の要素を削除
print("削除後のリスト:", my_list)

このコードでは、my_list という名前のリストを作成し、最初に [1, 2, 3] という3つの数字を入れています。 次に、append()メソッドを使って 4 を末尾に追加し、リストは [1, 2, 3, 4] になります。 さらにpop(0)を使って、先頭の要素 1 を削除しました。このように、リストは自由に変更ができることがわかります。

タプルの例

# タプルの作成
my_tuple = (1, 2, 3)
print("タプル:", my_tuple)

# タプルはイミュータブルなので、以下の行はエラーになります
# my_tuple[0] = 10  # TypeError: 'tuple' object does not support item assignment

ここでは my_tuple というタプルを (1, 2, 3) で作成しました。 リストと見た目が似ていますが、丸括弧を使う点が違います。そして、このタプルに対してmy_tuple[0] = 10と書いて値を変更しようとすると、TypeError というエラーが発生します。 これは、タプルがイミュータブルであるため、要素を変更できないことを示しています。

まとめ

ここまで見てきたように、リストとタプルには以下のような違いがあります。

  • リストはミュータブル:要素の追加や削除が可能で、柔軟なデータ操作に向いている。
  • タプルはイミュータブル:作成後は変更できず、固定データの保持に適している。
  • パフォーマンス:タプルの方がメモリ効率が良く、処理が速い場合がある。

データが変わる可能性があるならリスト、変わらないならタプルを使う。この判断基準を押さえておくと、コードの安全性や効率性が大きく向上します。

出力結果: