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 というエラーが発生します。
これは、タプルがイミュータブルであるため、要素を変更できないことを示しています。
ここまで見てきたように、リストとタプルには以下のような違いがあります。
データが変わる可能性があるならリスト、変わらないならタプルを使う。この判断基準を押さえておくと、コードの安全性や効率性が大きく向上します。