Pythonはその読みやすさとコードの美しさから多くのプログラマーに愛用されています。特にそのデータ構造は強力で柔軟性があり、データ構造を理解することでPythonのコーディングの幅が大きく広がります。
参考 Pythonの特徴

このページでは、Pythonの基本的なデータ構造であるリスト、タプル、辞書、集合に焦点を当てて初心者向けにわかりやすく解説します。
データ構造 | 定義方法 | ミュータブルか | 順序を保持 | インデックス指定 | 重複要素 | 主な用途 |
---|---|---|---|---|---|---|
リスト | [a, b, c] | 〇 | 〇 | 〇 | 〇 | 順序付けられた要素の集合 |
タプル | (a, b, c) | × | 〇 | 〇 | 〇 | 変更不可能な順序付けられた要素の集合 |
辞書 | {'a':1, 'b':2} | ※ | × | ※ | ※ | キーと値のペアの集合 |
集合 | {a, b, c} | 〇 | × | × | × | 重複しない要素の集合 |
各セクションでは、まず各データ構造の定義と基本的な操作から始め、それから特定のメソッドと使用例を紹介します。最後に、これらのデータ構造がどのように相互に関連して使用されるか、また、それぞれが最適な使用シーンは何かをまとめます。
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
Python:リスト(list)とは?
Pythonのリストは、順序を持った複数の要素を格納するためのデータ構造です。要素はどんなデータ型でも良く、さらに異なるデータ型の要素を1つのリスト内に格納することも可能です。


リストはざっくり「複数の値を代入することが可能な変数」だと理解してしまってOKです
リストの定義と基本操作
リストは角括弧([])を使って定義します。各要素は、「,(カンマ)」で区切ります。
# 数値のリスト numbers = [1, 2, 3, 4, 5] # 文字列のリスト fruits = ['apple', 'banana', 'cherry', 'date'] # 異なるデータ型の混在 mixed = [1, 'two', 3.0, ['a', 'b', 'c']] # 空のリスト empty = []

リストの要素には0から始まるインデックスを使ってアクセスします。リストの一部をスライス(範囲指定)することも可能。
また、リストはミュータブル(変更可能)であるため、既存の要素を変更したり、新しい要素を追加したり、要素を削除したりすることが可能です。
Python:タプル(tuple) とは?
タプルもリストと同じく順序を持つデータ構造ですが、タプルはイミュータブル(変更不可能)という重要な違いがあります。

つまり、一度定義したタプルの要素は変更することができません。

タプルはリストと同じようにさまざまな種類のデータを格納することができます。各データ項目は一意のインデックスによって参照され、整数型で0から始まるという点もリストと同様です。
タプルの定義と基本操作
タプルは丸括弧(())を使って定義します。
my_tuple = (1, 2, 3, 'apple', 'banana')
タプルの要素には0から始まるインデックスを使ってアクセスしますが、その要素を変更することはできません。

これが、タプルがミュータブルなデータ構造と比べてより安全な選択肢とされる理由の一つのポイントなので覚えておきましょう。
t = ('apple', 'banana', 'cherry') # 要素の変更は不可 t[0] = 'avocado' # TypeError: 'tuple' object does not support item assignment # 同様に要素の追加や削除も不可能 t.append('date') # AttributeError: 'tuple' object has no attribute 'append' del t[0] # TypeError: 'tuple' object doesn't support item deletion
タプルの主な用途の一つは、複数の値を一つの変数に格納することです。これにより、複数の値を一度に返す関数を作成したり、複数の値を一度に変数に代入することが可能になります。また、タプルはハッシュ可能なため、辞書のキーとしても使用できます。
Python:辞書(dictionary)とは?
Pythonの辞書型(dict型)とは、キー(key)と値(value)をペアにしてデータを格納するデータ型のこと。この特性は、項目の名前や属性に基づいてデータを格納する場合に特に便利です。

辞書の定義と基本操作
辞書は波括弧({})を使用して定義します。キーと値のペアはコロン(:)で区切られます。例えば以下のように定義できます。
city = { '東京' :"東京", '神奈川':"横浜", '大阪' :"大阪", '愛知' :"名古屋", '北海道':"札幌", } print(city['神奈川']) # キー「神奈川」の値を表示 print(city['愛知']) # キー「愛知」の値を表示 # 結果はこちら """ 横浜 名古屋 """
参考 print関数の使い方
辞書の要素はミュータブルなので、新たなキーと値のペアを追加したり、既存の値を変更したり、キーと値のペアを削除したりすることが可能。
city = { '東京' :"東京", '神奈川':"横浜", '大阪' :"大阪", '愛知' :"名古屋", '北海道':"札幌", } city['神奈川'] = 'YOKOHAMA' # キー神奈川の値を変更 print(city['神奈川']) # 結果はこちら """ YOKOHAMA """

ある程度経験のある方であればお気づきかもしれませんが、Pythonの辞書型とJSONには密接な関連があります。
JSONはJavaScript Object Notationの略で、データ交換フォーマットの一つです。Pythonの辞書型はキーと値のペアを保持するデータ構造ですが、JSONも同様に、中括弧で囲まれキーと値はコロンで区切られるという点で同一。
Pythonには、辞書型とJSONを相互に変換するためのjson
モジュールが組み込まれています。このモジュールのjson.dumps()
関数はPythonの辞書型をJSON文字列に変換し、json.loads()
関数はJSON文字列をPythonの辞書型に変換する役割を担うので、辞書型とJSONは相互にやりとりをすることが可能です。

ただし、Pythonの辞書型とJSONの間にはいくつかの違いもあります。例えば、JSONのキーは常に文字列でなければならないのに対し、Pythonの辞書型のキーは様々な型(数値、タプルなど)が可能です。また、Pythonの辞書型は順序を保持するのに対し、JSONは順序を保持しません。
Python:集合(set)とは?
集合(set型/セット)とはその名の通り数学の「集合」概念をコンピュータの世界に取り入れたもので、複数のユニークな(重複しない)要素を無順序で保持するデータ構造です。
リストは、順序を保持するデータ型で、重複した要素を含むことができます。それに対して、集合は順序を持たず、重複した要素を持つことができません。これは、例えば重複した要素を取り除きたい時に便利です。


タプルはイミュータブル(変更不可能)なデータ型であるのに対し、集合はミュータブル(変更可能)なデータ型です。つまり、集合は作成後に要素の追加や削除が可能です。


集合の定義と基本操作
集合は波括弧({})を用いて定義します。
# 数字の集合を作成 numbers = {1, 2, 3, 4, 5} print(numbers) # Output: {1, 2, 3, 4, 5} # 文字列の集合を作成 fruits = {"apple", "banana", "cherry"} print(fruits) # Output: {'apple', 'cherry', 'banana'}
波括弧の中にカンマで区切った要素を書くことで集合を作成することができます。この方法で作成した集合は順序を保持せず、重複した要素を持つことはありません。
Python:データ構造のまとめ

始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!