はじめに
こんにちは!
Pythonでデータを扱う際、よく忘れるので、自分用にまとめです。
今回は、リスト、タプル、辞書の違いについてまとめます。
リスト、タプル、辞書の違い
ざっくりと書くと、以下の通り。
特徴 | リスト | タプル | 辞書 |
---|---|---|---|
データ構造 | 順序付けられたデータの集まり | 順序付けられたデータの集まり | キーと値のペア |
順序の保持 | ○ | ○ | ○ (Python3.7以降) × (Python3.6以前) |
変更 | 可 | 不可 | 可 |
メモリ効率 | タプルと比較してわずかに不利 | リストと比較してわずかに有利 | キーの重複がないため、リストやタプルと比較して効率が良い場合がある |
主な用途 | データの順番が重要な場合 動的なデータ操作が必要な場合 |
変更不可であることを保証したいデータ 辞書のキー |
データに名前を付けて管理したい場合 キーによる高速な検索が必要な場合 |
以下では、これらのデータ構造について、より詳細に解説していきます。
1. リスト:柔軟なデータ操作を実現
リストは、要素と呼ばれるデータの列を保持するために使用されます。
リストの特徴は、要素の追加、削除、変更といった操作を自由に行える点。
特に、プログラムの実行中にデータの内容が変化する場合に便利。
# リストの作成
shopping_list = ["apple", "banana", "milk"]
# 要素へのアクセス
print(shopping_list[0])# 出力: apple
# 要素の追加
shopping_list.append("eggs")
print(shopping_list) # 出力: ['apple', 'banana', 'milk', 'eggs']
# 要素の変更
shopping_list[1] = "orange"
print(shopping_list) # 出力: ['apple', 'orange', 'milk', 'eggs']
# 要素の削除
del shopping_list[2]
print(shopping_list) # 出力: ['apple', 'orange', 'eggs']
# 一部分だけを取り出す
print(shopping_list[1:3]) # 出力: ['orange', 'eggs']
メリット:
- データ操作の柔軟性が高い
- 部分的なデータへのアクセスが容易
注意点:
- データの変更が可能であるということは、意図しない変更が発生するリスクもある
- タプルと比較すると、メモリ使用量や処理速度の面でわずかに不利になる場合がある(らしい)
2. タプル:一度決めたら変更不要なデータに最適
タプルもリストと同様に、順序付けられたデータの集まりを扱います。
リストとの大きな違いは、一度作成したデータの内容を変更できない点。
これは、プログラムの実行中にデータの内容が変わらないことが保証したい場合に便利。
# タプルの作成
coordinate = (10, 20)
# 要素へのアクセス
print(coordinate[0]) # 出力: 10
# 要素の変更はできません (エラー発生)
# coordinate[1] = 30
# データを個別に受け取る
x, y = coordinate
print(x, y) # 出力: 10 20
メリット:
- データの変更を防ぎ、安全性を高める
- 辞書のキーとして使用可能
- リストと比較して、メモリ使用量や処理速度の面でわずかに有利になる場合がある(らしい)
注意点:
- データの内容を変更できないため、柔軟性に欠けるという側面あり
3. 辞書:名前でアクセスするデータ管理を実現
辞書は、キーと値の組み合わせでデータを管理します。
キーを用いることで、目的のデータにすばやくアクセスできます。
これは、大量のデータの中から特定のデータを探し出す必要がある場合に非常に便利。
# 辞書の作成
user = {"name": "Alice", "age": 30, "city": "New York"}
# キーによる値へのアクセス
print(user["name"]) # 出力: Alice
# 要素の追加
user["occupation"] = "engineer"
print(user) # 出力: {'name': 'Alice', 'age': 30, 'city': 'New York', 'occupation': 'engineer'}
# 要素の変更
user["city"] = "London"
print(user) # 出力: {'name': 'Alice', 'age': 30, 'city': 'London', 'occupation': 'engineer'}
# 要素の削除
del user["age"]
print(user) # 出力: {'name': 'Alice', 'city': 'London', 'occupation': 'engineer'}
メリット:
- キーによる高速なデータアクセス
- データの追加、削除、変更が可能
注意点:
- Python3.6以前は、データの順番は保持されないため、順番が重要な場合はリストやタプルを使う必要がある
- Python3.7以降は、データの順序は保持される。
まとめ
どのデータ構造を選ぶかは、目的や状況によって異なります。
- 柔軟なデータ操作が必要な場合は リスト
- データの安全性を重視する場合は タプル
- キーによる高速なデータアクセスが必要な場合は 辞書
それぞれの特性を理解した上で使い分けることで、より効率的で安全なPythonプログラムを作成しましょう!