Python の集合型

Pythonには、ほかの変数を格納できる集合型の変数として次の4つがあります。

  • リスト
  • タプル
  • 集合
  • 辞書

リスト

listA = [1, 2, 3, 4]
listB = ['Hello', 'World']

リストは、変数を一列に並べたものです。英語では「list」。

順序が付いており、0から始まるインデックスを使って各要素にアクセスすることができます。他の言語では「配列」にあたるものです。

listA[1]  # 2番目の要素「2」が格納されている
listB[0]  # 1番目の要素「Hello」が格納されている

ひとつのリストに型の異なるさまざまな要素を混在させることもできます。

listC = [1, 'Hello']

ほかのリストを要素として持つこともできます。

listD = [listA, listB]

この場合、サブのリストの要素へは、インデックスを続けて2つ使うことでアクセスすることができます。

listD[1][0]  # 「Hello」が格納されている

タプル

tupleA = (1, 2, 3, 4)
tupleB = ('Hello', 'World')

タプルはリストと同じく変数を一列に並べたものです。英語では「tuple」。便宜上タプルと書きますが、発音は「トゥプル」に近いです。

タプルもリストと同様に、0から始まるインデックスを使って各要素にアクセスすることができます。

tupleA[1]  # 2番目の要素「2」が格納されている

リストとタプルのちがいは、リストは定義した後にも要素の追加や更新・削除といった編集が可能な一方、タプルはそのような操作を受けつけない点。というのが最初の理解としてはよいかと思います。

そういった操作が可能かどうかを表す特徴を、mutable(可変)/immutable(不可変)といったりします。

集合

setA = set([1, 2, 3])

集合は、順序なしで変数をまとめたものです。英語では「set」。

集合の各要素は必ずユニークであるという制限があり、同じ要素を2つ以上持つことはできません。つまり、

setA = set([1, 2, 3])
setA.add(1)

と、すでに含まれている要素を追加してみても、その後の中身は変わらず

setA  # set([1, 2, 3])

のままとなります。

Pythonの集合では、数学の集合論で使う集合でいう「集合同士の演算」が可能です。つまり、和集合(union)、共通部分(intersection)、差集合(difference)といった集合をごくカンタンな記述で得ることができます。

辞書

dictA = {'pochi':'wan', 'tama':'nyan' }

辞書は、変数を「キー」と「値」という2つをひとセットとしてまとめたものです。英語では「dictionary」。

リストの要素はインデックスでアクセスできましたが、辞書の要素にはキーでアクセスすることができます。

dictA['pochi']  # 'wan'が入っている

リスト、タプル、集合、辞書―-それぞれに特徴があります。まずはその特徴を把握し、それぞれを適切な「使いどころ」で使うということがPythonらしいシンプルなコードを書く最初のポイントかと思います。

それぞれについてはまた別に取り上げていきます。