Pythonのリストとタプルの違いを徹底解説!特徴と使い分けのポイント
この記事では、Pythonにおけるリスト(list)とタプル(tuple)の違いについて詳しく解説します。
リストとタプルは、Pythonでデータを格納するために使われる代表的な2つのデータ構造です。どちらも異なる型のデータをまとめて扱うことができますが、それぞれに重要な特徴があります。
リスト(list)とは
リストは「シーケンス」とも呼ばれ、Pythonで最も頻繁に使われるデータ型の一つです。柔軟性が高く、さまざまな場面で活用できるのが魅力です。
リストを作成するには、すべての要素を角括弧 [ ] の中に入れ、要素同士をカンマで区切ります。リストには任意の数の要素を格納でき、整数・浮動小数点数・文字列など、異なる型を混在させることも可能です。
リストの最も重要な特徴は「ミュータブル(変更可能)」であるという点です。つまり、後から要素の追加・削除・変更が自由に行えます。
それでは、異なる型のデータを持つリストを作成する例を見てみましょう。
サンプルコード
my_list = [1.8, 'string', 34, 'a'] print(my_list)
実行結果
[1.8, 'string', 34, 'a']
インデックスによる要素へのアクセス
リスト内のデータには、さまざまな方法でアクセスできます。まずはインデックスを使ったアクセス方法を見てみましょう。
my_list = [1.8, 'string', 34, 'a']
print("2番目の要素は")
print(my_list[1])実行結果
2番目の要素は string
インデックスは0から始まるため、my_list[1] は2番目の要素を指します。
スライシングによる範囲指定アクセス
特定の範囲の要素にまとめてアクセスすることもできます。これを「スライシング」と呼びます。
my_list = [1.8, 'string', 34, 'a']
print("指定した範囲の要素は")
print(my_list[1:4])実行結果
指定した範囲の要素は ['string', 34, 'a']
要素の値を変更する
リストはミュータブルなので、インデックスを指定して新しい値を代入することで、既存の要素を書き換えることができます。
my_list = [1.8, 'string', 34, 'a']
print("変更前のリスト")
print(my_list)
my_list[1] = 'my_string'
print("変更後のリスト")
print(my_list)実行結果
変更前のリスト [1.8, 'string', 34, 'a'] 変更後のリスト [1.8, 'my_string', 34, 'a']
タプル(tuple)とは
次に、タプルの仕組みを見ていきましょう。タプルは丸括弧 ( ) を使って作成します。
タプルの最も重要な特徴は「イミュータブル(変更不可能)」であるという点です。一度タプルに格納した要素は、後から変更することができません。 格納できる要素の数や型に制限はなく、リストと同様に整数・浮動小数点数・文字列などを混在させられます。
補足: タプルは丸括弧を使わずに作成することも可能ですが、可読性の観点から括弧を使用するのが良い習慣とされています。
要素が1つだけのタプルを作成する
要素が1つだけのタプルを作成する場合は、末尾にカンマを付ける必要がある点に注意してください。
my_tuple = ("hey",)
print("要素が1つのタプルを作成")
print(my_tuple)実行結果
('hey',)カンマを忘れると、Pythonはそれを単なる文字列として扱い、タプルとして認識しません。
補足: タプルの要素へのアクセス方法、負のインデックス(マイナスインデックス)、スライシングの使い方は、リストとまったく同じです。
タプル内にリストが含まれる場合
タプルの中にリストが含まれている場合、そのリスト自体は変更可能です。ただし、タプル直下の要素(リストの外にある要素)は変更できません。この点は覚えておくと便利です。
まとめ:リストとタプルの使い分け
リストとタプルの主な違いを整理すると以下のようになります。
- リスト: 角括弧
[ ]で定義し、ミュータブル(変更可能)。データの追加・削除・更新が必要な場合に適しています。 - タプル: 丸括弧
( )で定義し、イミュータブル(変更不可能)。変更されない固定データを扱う場合や、辞書のキーとして使いたい場合に適しています。
用途に応じて適切なデータ構造を選択することで、より安全で効率的なPythonプログラムを書くことができます。
-
Pythonのリストとタプルの違いとは?特徴と使い分けのポイントを解説
Pythonでは複数の値をまとめて扱えるシーケンス型として、リスト(list)とタプル(tuple)がよく使われます。どちらも似たような役割を持っていますが、決定的な違いがあります。それはタプルが「不変(immutable)」であるという点です。 最大の違い:タプルは変更できない タプルは一度作成すると、その中の値を後から変更することができません。一方、リストは「可変(mutable)」なので、作成後でも要素の追加・削除・変更が自由に行えます。 # リスト:変更可能 my_list = [1, 2, 3] my_list[0] = 10 # 正常に変更できる # タプル:変更不可 my_
-
Pythonのリスト操作:appendと+演算子の動作の違いを徹底解説
Pythonにおいて、+演算子を使って2つのリストを結合すると、新しいリストが作成され、元のリストオブジェクトは変更されません。一方、appendやextendなどのメソッドを使用すると、リストは「その場(in-place)」で追加されます。つまり、元のオブジェクト自体が変更されるのです。 さらに重要な違いとして、appendは引数に渡したリストを1つのオブジェクトとしてそのまま挿入するのに対し、+演算子は2つのリストの要素を連結(結合)するという点が挙げられます。 +演算子を使った例 list1 = [1, 2, 3] list2 = [a, b] list3 = list1 + list2