Python セット (Sets)
1. セット (Sets) とは
セット(Sets)は、1つの変数の中に複数の項目を保存するために使用されます。
数学でいう「集合」に近い概念で、Pythonに組み込まれている4つの主要なコレクション(List, Tuple, Set, Dictionary)の一つです。
セットは波括弧 {} を使用して記述します。
例:セットの作成
thisset = {"apple", "banana", "cherry"}
print(thisset)注意: セットは順序がない(Unordered)ため、項目がどのような順序で表示されるかは保証されません。実行するたびに結果の並びが変わる可能性があります。
2. セット項目の特性 (Set Items)
セットの項目には、他のコレクションとは異なる3つの大きな特徴があります。
- 順序がない (Unordered): 項目に定義された順序はありません。そのため、インデックス([0]など)を使って項目を参照することはできません。
- 変更不可能 (Unchangeable): セットを作成した後、項目そのものを書き換えることはできません。 ただし、新しい項目を追加したり、既存の項目を削除したりすることは可能です。
- 重複を許さない (Duplicates Not Allowed): 同じ値を持つ項目を複数持つことはできません。
3. 重複の扱いに関する「落とし穴」
セットは重複を認めませんが、Pythonの内部処理において一部の異なるデータ型が「同じ」とみなされる点に注意が必要です。
3.1 True と 1 は同じ
セット内では、True と数値の 1 は同じ値として扱われ、重複とみなされます。
thisset = {"apple", "banana", "cherry", True, 1, 2}
print(thisset)
# 1 と True のうち、先に出現した方だけが保持されます3.2 False と 0 は同じ
同様に、False と数値の 0 も重複として扱われます。
thisset = {"apple", "banana", "cherry", False, 0, 2}
print(thisset)
# False と 0 のうち、一方しか残りません4. セットの長さ (Length)
他のコレクションと同様、len() 関数を使用してセットに含まれる項目の数を確認できます。
thisset = {"apple", "banana", "cherry"}
print(len(thisset))5. データ型とコンストラクタ
セットには、文字列、数値、ブーリアンなど、あらゆるデータ型を含めることができます。
- データ型の確認:
type()を使うと<class 'set'>と表示されます。 set()コンストラクタ: リストやタプルからセットを作成する(重複を排除したい時などに便利)際に使用します。
# set() コンストラクタを使用した作成(二重の丸括弧に注意)
thisset = set(("apple", "banana", "cherry"))
print(thisset)6. Pythonコレクション比較まとめ
| コレクション | 順序 | 変更 | 重複 |
|---|---|---|---|
| List | あり | 可能 | 許容 |
| Tuple | あり | 不可能 | 許容 |
| Set | なし | 不可能* | 不可 |
| Dictionary | あり** | 可能 | 不可 |
* 項目自体の変更は不可ですが、セットに対する追加・削除は可能です。
** Python 3.7以降。
💡 エンジニアの知恵: 「特定のリストの中に、重複したユーザーIDが混じっていないか?」を確認したい時、そのリストを一度set()に放り込んでlen()を比較する手法は、Python開発における定番の時短テクニックです。