はじめに
最近Pythonを学習し、複数の値を格納する型にList型とSet型があることを学習したので2つの型の違いと使い所をまとめようと思います。
List型
List型とは
複数の要素を順序付けて格納できる可変長のデータ型で他言語でいう配列になります。特徴として以下のようなものがあります。
- 順序付けられたデータ:要素は挿入順序を保持
 - 任意のデータ型を格納可能:整数、文字列、他のリストなど、異なる型のデータを混在可能
 - 可変長:要素の追加、削除、変更が可能
 - インデックスアクセス:0から始まるインデックスで要素にアクセス
 
よく使うメソッド
- append():リストの末尾に要素を追加
 - extend():別のリストの全要素を追加
 - insert():指定したインデックスに要素を挿入
 - remove():最初に見つかった特定の要素を削除
 - pop():インデックスを指定して要素を削除(デフォルトは最後の要素)
 - copy():リストをコピーする
 
使用シーン
List型は順序を保持したい場合や、重複するデータを扱いたい場合に適しています。例えば、タスクの実行順序を管理したり、商品の購入履歴のように同じデータを複数回記録する必要がある場面で使用します。また、特定の位置の要素にアクセスしたり順番に処理したい場合にも使用します。
Set型
Set型とは
重複しない要素を無作為に格納する集合型です。特徴として以下のようなものがあります。
- 順序なし:要素の順序は保証しない
 - 重複不可:同じ値を複数回追加しても1つだけ保持
 - 変更可能:要素の追加や削除が可能
 
よく使うメソッド
- add():要素を追加
 - remove():特定の要素を削除(要素が存在しない場合はエラー)
 - discard():要素を削除(要素が存在しない場合は何もしない)
 - union():和集合を取得
 - intersection():積集合を取得
 
使用シーン
Set型は重複を排除して一意のデータを管理したい場合や、集合演算(和・積・差・対称差)を効率的に行いたい場合に適しています。例えば、一意のユーザーIDを保持する際や異なるグループ間の共通要素や差分を求める際に使用します。また、要素の存在確認が多い場合にも高速な検索性能が活用できます。
まとめ
| 特徴 | List型 | Set型 | 
| 順序 | 順序あり(挿入順を保持) | 順序なし | 
| 重複 | 許容 | 不許可 | 
| アクセス | インデックスでアクセス可能 | インデックスでのアクセス不可 | 
| 主な用途 | 順序を重視、重複を許容 | 一意性を重視、集合演算 | 
いかがでしたでしょうか?今回はList型とSet型の違いについてまとめました。今後、Pythonの知見が深くなったらもう少し踏み込んだところまでまとめようと思います。