Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのリスト(list)とタプル(tuple)の違いを徹底解説!使い分けのポイント

Pythonには複数の値をまとめて扱うためのデータ構造として「リスト(list)」と「タプル(tuple)」が用意されています。どちらもシーケンス型の一種で似たような使い方ができますが、「変更可能かどうか」「処理速度」「メモリ効率」などの点で大きな違いがあります。

この記事では、それぞれの特徴とコード例、そして6つの観点からの比較表を使って、両者の違いと使い分けのポイントをわかりやすく解説します。

リスト(list)とは

リストは、異なる型のオブジェクトを格納できるミュータブル(変更可能)なコンテナです。要素の追加・削除・変更が自由に行えるため、データの入れ替えや繰り返し処理(イテレーション)によく使われます。

記述方法は角括弧 [ ] を使用します。

my_list = ['a', 'b', 'c', 'd', 'e']

# 要素の変更・追加・削除が可能
my_list[0] = 'x'
my_list.append('f')
print(my_list)  # ['x', 'b', 'c', 'd', 'e', 'f']

タプル(tuple)とは

タプルもリストとよく似たデータ構造ですが、イミュータブル(変更不可)である点が異なります。一度作成したタプルは、要素の変更・追加・削除ができません。その代わり、リストよりも処理が高速で、メモリ消費も抑えられます。

記述方法は丸括弧 ( ) を使用します。

my_tuple = ('a', 'b', 'c', 'd', 'e')

# 要素の参照は可能
print(my_tuple[0])  # 'a'

# 変更しようとするとエラーになる
my_tuple[0] = 'x'  # TypeError: 'tuple' object does not support item assignment

以下の表は、リストとタプルの重要な違いをまとめたものです。

リストとタプルの比較表

No.項目リスト(list)タプル(tuple)
1可変性(型)ミュータブル(変更可能)。イミュータブル(変更不可)。
2反復処理の速度反復処理はやや遅く、時間がかかる。反復処理が高速。
3適した用途要素の挿入・削除など、データを書き換える処理に有用。要素へのアクセスなど、読み取り専用の操作に有用。
4メモリ消費量メモリをより多く消費する。メモリ消費が少ない。
5組み込みメソッドappend() や remove() など、豊富な組み込みメソッドを持つ。count() や index() など、組み込みメソッドが少ない。
6エラーの発生しやすさデータを変更できるため、操作ミスによる予期しないエラーが起こりやすい。データが不変のため、操作が安全。

辞書のキーとして使えるか

もう一つ重要な違いとして、タプルはイミュータブル(ハッシュ可能)であるため辞書(dict)のキー集合(set)の要素として利用できますが、リストはミュータブルなためキーとして使用できません。

coordinates = {(35.6895, 139.6917): "東京", (34.6937, 135.5023): "大阪"}
print(coordinates[(35.6895, 139.6917)])  # 東京

使い分けの目安

  • 後から内容を書き換える可能性がある場合 → リストを使用
  • 固定されたデータ(曜日名、設定値など)を扱う場合 → タプルを使用
  • パフォーマンスやメモリ効率を重視する場合 → タプルを使用
  • 辞書のキーが必要な場合 → タプルを使用

このように、リストとタプルは用途によって適切に使い分けることで、より安全で効率的なPythonコードを書くことができます。

  1. Pythonのリストと配列(array)の違いとは?使い分けのポイントを解説

    Pythonのリストと配列、何が違うのか?Pythonでデータを扱う際、「リスト(list)」と「配列(array.array)」はどちらもよく使われるデータ構造ですが、それぞれ特徴が大きく異なります。この記事では、両者の違いと使い分けのポイントをわかりやすく解説します。リスト(list):柔軟性が高い万能型Pythonのリストは非常に柔軟なデータ構造です。最大の特徴は、異なる型のデータを混在させて格納できる点にあります。例えば、以下のように整数・文字列・ネストしたリストなどを自由に組み合わせられます。[1, a, [1, 2], string]また、リストへの要素追加(append)は償却定

  2. Pythonのリストとタプルの違いとは?特徴と使い分けのポイントを解説

    Pythonでは複数の値をまとめて扱えるシーケンス型として、リスト(list)とタプル(tuple)がよく使われます。どちらも似たような役割を持っていますが、決定的な違いがあります。それはタプルが「不変(immutable)」であるという点です。 最大の違い:タプルは変更できない タプルは一度作成すると、その中の値を後から変更することができません。一方、リストは「可変(mutable)」なので、作成後でも要素の追加・削除・変更が自由に行えます。 # リスト:変更可能 my_list = [1, 2, 3] my_list[0] = 10 # 正常に変更できる # タプル:変更不可 my_