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

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プログラムを書くことができます。

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

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

  2. Pythonのリスト操作:appendと+演算子の動作の違いを徹底解説

    Pythonにおいて、+演算子を使って2つのリストを結合すると、新しいリストが作成され、元のリストオブジェクトは変更されません。一方、appendやextendなどのメソッドを使用すると、リストは「その場(in-place)」で追加されます。つまり、元のオブジェクト自体が変更されるのです。 さらに重要な違いとして、appendは引数に渡したリストを1つのオブジェクトとしてそのまま挿入するのに対し、+演算子は2つのリストの要素を連結(結合)するという点が挙げられます。 +演算子を使った例 list1 = [1, 2, 3] list2 = [a, b] list3 = list1 + list2