目次
はじめに
Pythonには「リスト」「タプル」「辞書」「集合」と呼ばれる4つのデータ構造があります。
どれもデータを管理する上で利用できるものではありますが、それぞれ違いやどのように使い分けるかを知っておくことでよりコードの可読性などもあげることができます。
今回はそれらのデータ構造の特徴や使い分け方をまとめたいと思います。
リスト(list)
リストの特徴は以下の通りです。
・順番がある(インデックス指定でアクセス可能)
・データの追加、削除等の変更が可能
・データの重複もOK
データの内容が今後増減する可能性のあるものやデータの順番に意味合いがあるものをまとめる際に向いている方式になります。
例:動物のデータをリストでまとめる場合
animal = ["Cat", "Dog", "Rabbit"]
# 取り出し
print(animal[1]) # Dog
# 変更
animal[1] = "Pig"
print(animal) # ['Cat', 'Pig', 'Rabbit']
# 追加
animal.append("Goat")
print(animal) # ['Cat', 'Pig', 'Rabbit', 'Goat']
# 削除
animal.remove("Cat")
print(animal) # ['Pig', 'Rabbit', 'Goat']
タプル(tuple)
タプルの特徴は以下の通りです。
・順番がある
・データの追加、削除等が不可
・データの重複OK
リストとの違いとしてデータの追加、削除が不可のため、曜日のデータなどデータの内容が不変のものをまとめる際に向いている方式になります。
days = ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
print(days[3]) # Thu
# days.append("NewDay") ← エラー(変更不可)
リストのようにappendを用いてデータ追加しようとするとエラーとなります。
辞書(dict)
辞書の特徴は以下の通りです。
・順番がある
・キーと値のペアでデータを管理
・キーの重複は不可、値の重複は可能
ユーザーのデータ(名前、年齢等)のデータを名前付きで管理したい場合に向いている方式になります。
users = [
{"name": "Ichiro", "age": 25},
{"name": "Taro", "age": 30},
{"name": "Hanako", "age": 22}
]
print(users[1]["name"]) # Taro
上記のコードだと"name"と"age”がそれぞれキーとなり、それぞれのデータにアクセスができます。
集合(set)
集合の特徴は以下の通りです。
・順番なし
・重複なし
・データの追加、削除が可能
・集合演算に強い
まとまったデータの中から重複をなくしたいときや2つのデータとの差分などを洗い出すときに向いている方式になります。
# 重複削除
names = ["Ichiro", "Taro", "Ichiro"]
unique = set(names)
print(unique) # {'Ichiro', 'Taro'}
# 差分洗い出し
old = {"Kazuya", "Taro"}
new = {"Kazuya", "Taro", "Hanako"}
added = new - old
print(added) # {'Hanako'}
終わりに
今回はPythonにおける4つのデータ構造についての特徴をまとめました。
どれも使い方は似たような形にはなりますが、それぞれの利用用途を理解することでより可読性と効率性を大きく向上させることができます。
自身も今回学んだことを意識して今後コードを作成していければと思います。