DESIGNMAP

  1. TOP
  2. 公開講座
  3. ゼロから始めるPython入門
  4. 集合 ー ゼロから始めるPython入門【Vol.13】

集合 ー ゼロから始めるPython入門【Vol.13】

集合は辞書からキーだけを残したデータ型です。辞書と同じくキーは重複ができませんし、順番は保証されません。

実行対話モードでコードを書いてみましょう。
Windowsはコマンドプロンプト、Macはターミナルを起動します。Windowsは「python」、Macは「python3」と入力して[Enter]キーをおします。
対話実行モードに切り替わります。

集合は波括弧({})で囲んで、要素をカンマで区切ります。

>>> my_set = {0, 2, 3, True, "太郎"}
>>> my_set
{0, True, 2, 3, '太郎'}

辞書と同じく要素に順番はありません。

ほかのデータ型から集合をつくる

set()関数に文字列、リスト、タプル、辞書を渡すと、集合をつくることができます。

>>> set("埼玉県")
{'県', '埼', '玉'}
>>> set(["みかん", "すいか", "もも"])
{'みかん', 'もも', 'すいか'}
>>> set( ("みかん", "すいか", "もも") )
{'みかん', 'もも', 'すいか'}
>>> set( {"name": "田中一郎", "hobby": "将棋"} )
{'name', 'hobby'}

辞書はキーのみが残ります。

空の集合をつくりたいとき

空の集合をつくりたいときに{}と書いてしまうと、空の辞書ができてしまいます。

>>> my_set = {}
>>> my_set
{}
>>> type(my_set)

この場合、set()関数を使います。

>>> my_set = set()
>>> my_set
set()
>>> type(my_set)

要素の追加と削除

add()で要素の追加ができます。

>>> my_set = {"青森県", "秋田県"}
>>> my_set.add("岩手県")
>>> my_set
{'青森県', '秋田県', '岩手県'}

重複した要素を追加した場合、何もおこりません。エラーにもなりません。

>>> my_set = {1, 2, 3}
>>> my_set.add(2)
>>> my_set
{1, 2, 3}

remove()で要素の削除ができます。

>>> my_set = {"青森県", "秋田県", '岩手県'}
>>> my_set.remove("岩手県")
>>> my_set
{'青森県', '秋田県'}

存在しない要素を削除しようとするとエラーがでます。

>>> my_set = {"青森県", "秋田県", '岩手県'}
>>> my_set.remove("埼玉県")
Traceback (most recent call last):
  File "", line 1, in 
KeyError: '埼玉県'

すべての要素を削除する

clear()で集合のすべての要素を削除できます。

>>> my_set = {"青森県", "秋田県"}
>>> my_set.clear()
>>> my_set
set()

集合演算

集合は集合演算ができます。

積集合

2つの集合の両方に含まれる要素だけを取得します。

>>> fruits1 = {"すいか", "いちご", "もも", "みかん"}
>>> fruits2 = {"メロン", "もも", "オレンジ", "みかん"}
>>> fruits1 & fruits2
{'みかん', 'もも'}

和集合

2つの集合を合算します。重複している要素はひとつになります。

>>> fruits1 | fruits2
{'メロン', 'すいか', 'いちご', 'もも', 'オレンジ', 'みかん'}

差集合

最初の集合の要素から、2番目の集合の要素を引きます。

>>> fruits1 - fruits2
{'いちご', 'すいか'}

排他集合

2つの集合のどちらにもある要素を削除。片方だけに含まれている要素だけを取得します。

>>> fruits1 ^ fruits2
{'メロン', 'いちご', 'すいか', 'オレンジ'}

特定の集合の値をダイレクトにとりだすことはできない

集合はダイレクトに特定の値をとりだすことはできません。角括弧にオフセットやキーを入れて取り出そうとするとエラーになります。

>>> fruits1 = {"すいか", "いちご", "もも", "みかん"}
>>> fruits[0]
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object does not support indexing
>>> fruits["すいか"]
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not subscriptable

for文でとりだすことはできる

集合の要素はfor文でとりだすことができます。
for文は「forによる繰り返し処理 ー ゼロから始めるPython入門【Vol.7】」をご覧ください。

>>> for v in {"すいか", "いちご", "もも", "みかん"}:
...     v
... 
'みかん'
'もも'
'すいか'
'いちご'

下記のようにforの中にif文をいれると集合の特定の要素だけを取得できます。ただしその場合、集合ではなく、リストを使うので実際に下記のように書くことはないでしょう。

for v in {"すいか", "いちご", "もも", "みかん"}:
    if v == "すいか":
        print(v)
すいか

スポンサーリンク

関連記事

プロフィール

DESIGNMAP
制作ディレクター。
お問い合わせ