Python 速習チュートリアル

Python セット (Sets)

1. セット (Sets) とは

セット(Sets)は、1つの変数の中に複数の項目を保存するために使用されます。
数学でいう「集合」に近い概念で、Pythonに組み込まれている4つの主要なコレクション(List, Tuple, Set, Dictionary)の一つです。

セットは波括弧 {} を使用して記述します。

例:セットの作成

thisset = {"apple", "banana", "cherry"}
print(thisset)

注意: セットは順序がない(Unordered)ため、項目がどのような順序で表示されるかは保証されません。実行するたびに結果の並びが変わる可能性があります。

2. セット項目の特性 (Set Items)

セットの項目には、他のコレクションとは異なる3つの大きな特徴があります。

  1. 順序がない (Unordered): 項目に定義された順序はありません。そのため、インデックス([0]など)を使って項目を参照することはできません。
  2. 変更不可能 (Unchangeable): セットを作成した後、項目そのものを書き換えることはできません。 ただし、新しい項目を追加したり、既存の項目を削除したりすることは可能です。
  3. 重複を許さない (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開発における定番の時短テクニックです。