1. リスト(list)
特徴:
- 順序あり: 要素が挿入された順番を保持します。つまり、インデックス番号を使って要素にアクセスできます。
- 可変: リストの要素は追加、削除、変更が可能です。
- 重複を許可: 同じ要素を何度でも追加できます。
使い方:
fruits = ["りんご", "みかん", "バナナ"]
用途:
- 順序が重要なデータを扱いたい場合。
- データの追加や削除が頻繁に行われる場合。
主な操作:
- 要素の追加:
append() - 要素の削除:
remove() - インデックスでのアクセス:
fruits[0]など
2. タプル(tuple)
特徴:
- 順序あり: リストと同様に、順序が保持され、インデックス番号で要素にアクセスできます。
- 不変: 一度作成したタプルは、要素の追加、削除、変更ができません。
- 重複を許可: 同じ要素を複数回追加できます。
使い方:
vegetables = ("にんじん", "トマト", "キャベツ")
用途:
- データの内容が変わらないことが保証されている場合(例: 座標、設定値など)。
- リストよりもメモリ効率がよいため、変更の必要がない固定データを扱う際に使います。
主な操作:
- インデックスでのアクセス:
vegetables[1]など - 要素数の取得:
len(vegetables)
3. 辞書(dict)
特徴:
- キーと値のペア: 辞書はキーと値の組み合わせでデータを格納します。キーを使って値にアクセスします。
- 順序あり(Python 3.7以降): 挿入順序を保持します。
- 可変: キーと値のペアは追加、削除、変更が可能です。
- キーは重複不可: 同じキーを2つ持つことはできませんが、値は重複可能です。
使い方:
fruit_prices = {"りんご": 100, "みかん": 80, "バナナ": 120}
用途:
- 各キーに関連する値を格納する場合(例: 商品とその価格、名前と年齢など)。
- キーを使って効率的にデータにアクセスする必要がある場合。
主な操作:
- 値の取得:
fruit_prices["りんご"] - 新しいキーと値の追加:
fruit_prices["いちご"] = 300 - キーの削除:
del fruit_prices["バナナ"]
4. 集合(set)
特徴:
- 順序なし: 集合は順序を保持しません。要素にインデックスでアクセスできません。
- 可変: 要素の追加や削除が可能です。
- 重複不可: 同じ要素を複数回持つことはできません。自動的に重複を排除します。
使い方:
fruit_set = {"りんご", "みかん", "バナナ"}
用途:
- 重複する要素を排除したい場合(例: 一意なデータのコレクション)。
- 集合論的な操作(例: 積集合、和集合、差集合)を扱う場合。
主な操作:
- 要素の追加:
fruit_set.add("ぶどう") - 要素の削除:
fruit_set.remove("りんご") - 和集合:
set1.union(set2) - 積集合:
set1.intersection(set2)
違いのまとめ:
| 特徴 | リスト(list) |
タプル(tuple) |
辞書(dict) |
集合(set) |
|---|---|---|---|---|
| 順序 | あり | あり | あり(Python 3.7以降) | なし |
| 可変性 | 可変 | 不変 | 可変 | 可変 |
| 重複 | 許可 | 許可 | キーは不可、値は許可 | 不可 |
| データ構造 | 要素の集まり | 要素の集まり | キーと値のペア | 要素の集まり |
| アクセス方法 | インデックス | インデックス | キー | 要素存在の確認のみ |
どのデータ型を使うべきかのポイント:
- リスト: 順序が重要で、データを頻繁に変更する必要がある場合に使います。
- タプル: 変更しないデータを効率的に保持する場合に使います。
- 辞書: キーと値の対応関係を持つデータを管理したいときに使います。
- 集合: 重複を許さない、順序が不要なデータを管理したいときに使います。