PR

【Python】データ構造(リスト・タプル・辞書・集合)の基本を3分でわかりやすく解説

Python

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

参考 Pythonの特徴

このページでは、Pythonの基本的なデータ構造であるリスト、タプル、辞書、集合に焦点を当てて初心者向けにわかりやすく解説します。

データ構造定義方法ミュータブルか順序を保持インデックス指定重複要素主な用途
リスト[a, b, c]順序付けられた要素の集合
タプル(a, b, c)×変更不可能な順序付けられた要素の集合
辞書{'a':1, 'b':2}×キーと値のペアの集合
集合{a, b, c}×××重複しない要素の集合
※詳細は個別に解説
このページで学べる内容
  • リスト
    • リストの定義と基本操作
  • タプル
    • タプルの定義と基本操作
  • 辞書(dictionary)
    • 辞書の定義と基本操作
  • 集合
    • 集合の定義と基本操作

各セクションでは、まず各データ構造の定義と基本的な操作から始め、それから特定のメソッドと使用例を紹介します。最後に、これらのデータ構造がどのように相互に関連して使用されるか、また、それぞれが最適な使用シーンは何かをまとめます。

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

参考 Pythonの基本的な書き方・構文ルール

スポンサーリンク

Python:リスト(list)とは?

Pythonのリストは、順序を持った複数の要素を格納するためのデータ構造です。要素はどんなデータ型でも良く、さらに異なるデータ型の要素を1つのリスト内に格納することも可能です。

Python リストとは
図1:Pythonのリスト

リストはざっくり「複数の値を代入することが可能な変数」だと理解してしまってOKです

リストの定義と基本操作

リストは角括弧([])を使って定義します。各要素は、「,(カンマ)」で区切ります。

# 数値のリスト
numbers = [1, 2, 3, 4, 5]

# 文字列のリスト
fruits = ['apple', 'banana', 'cherry', 'date']

# 異なるデータ型の混在
mixed = [1, 'two', 3.0, ['a', 'b', 'c']]

# 空のリスト
empty = []

リストの要素には0から始まるインデックスを使ってアクセスします。リストの一部をスライス(範囲指定)することも可能。

また、リストはミュータブル(変更可能)であるため、既存の要素を変更したり、新しい要素を追加したり、要素を削除したりすることが可能です。

Python:タプル(tuple) とは?

タプルもリストと同じく順序を持つデータ構造ですが、タプルはイミュータブル(変更不可能)という重要な違いがあります。

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

Python タプルとは
図2:Pythonのタプル

タプルはリストと同じようにさまざまな種類のデータを格納することができます。各データ項目は一意のインデックスによって参照され、整数型で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)をペアにしてデータを格納するデータ型のこと。この特性は、項目の名前や属性に基づいてデータを格納する場合に特に便利です。

Python 辞書とは
図3:Pythonの辞書

辞書の定義と基本操作

辞書は波括弧({})を使用して定義します。キーと値のペアはコロン(:)で区切られます。例えば以下のように定義できます。

city = {
    '東京'  :"東京", 
    '神奈川':"横浜", 
    '大阪'  :"大阪", 
    '愛知'  :"名古屋", 
    '北海道':"札幌",
}

print(city['神奈川']) # キー「神奈川」の値を表示
print(city['愛知'])    # キー「愛知」の値を表示


# 結果はこちら
"""
横浜
名古屋
"""

参考 print関数の使い方

辞書の要素はミュータブルなので、新たなキーと値のペアを追加したり、既存の値を変更したり、キーと値のペアを削除したりすることが可能

city = {
    '東京'  :"東京", 
    '神奈川':"横浜", 
    '大阪'  :"大阪", 
    '愛知'  :"名古屋", 
    '北海道':"札幌",
}

city['神奈川'] = 'YOKOHAMA'  # キー神奈川の値を変更

print(city['神奈川'])


# 結果はこちら
"""
YOKOHAMA
"""
Pythonの辞書型
  • Pythonの辞書型(dict)は、キーと値のペアの集合を格納するデータ構造。以下の特性を持つ点を押さえておきましょう。
    • キーと値のペア:辞書はキーと値のペアを保存します。キーを使って値にアクセス可能。
    • ミュータブル:辞書は変更可能(mutable)です。アイテムの追加、変更、削除が可能。
    • ユニークなキー:辞書のキーはユニークでなければなりません。同じキーを持つアイテムを辞書に追加しようとすると、新しいアイテムが既存のアイテムを上書きします。
辞書型とJSON

ある程度経験のある方であればお気づきかもしれませんが、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型/セット)とはその名の通り数学の「集合」概念をコンピュータの世界に取り入れたもので、複数のユニークな(重複しない)要素を無順序で保持するデータ構造です。

集合型(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の集合型は、順序が無く、各要素がユニークであるデータ構造
    • 集合型はset()関数や{}を使って作成する。
    • 集合型は要素の追加、削除、存在確認など、基本的な操作がサポートされています。

Python:データ構造のまとめ

Pythonのデータ構造のまとめ

データ構造定義方法ミュータブルか順序を保持インデックス指定重複要素主な用途
リスト[a, b, c]順序付けられた要素の集合
タプル(a, b, c)×変更不可能な順序付けられた要素の集合
辞書{'a':1, 'b':2}×キーと値のペアの集合
集合{a, b, c}×××重複しない要素の集合
# リスト
list_example = ['apple', 'banana', 'cherry']
list_example.append('date')  # リストに要素を追加
print(list_example)  # Output: ['apple', 'banana', 'cherry', 'date']

# タプル
tuple_example = ('apple', 'banana', 'cherry')
# tuple_example.append('date')  # エラー、タプルは変更不可能
print(tuple_example)  # Output: ('apple', 'banana', 'cherry')

# 辞書
dict_example = {'name': 'John', 'age': 30, 'city': 'New York'}
dict_example['city'] = 'Los Angeles'  # 辞書の要素を変更
print(dict_example)  # Output: {'name': 'John', 'age': 30, 'city': 'Los Angeles'}

# 集合
set_example = {'apple', 'banana', 'cherry'}
set_example.add('date')  # 集合に要素を追加
print(set_example)  # Output: {'date', 'cherry', 'banana', 'apple'}
# 順序は保持されない、また出力時の順序はプログラム実行ごとに異なる可能性がある

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました