見出し画像

和集合、差集合、積集合

今日は、『Head First Python』の3章 “構造化データ” での学びをアウトプットします。

シーケンスから集合を作成する

母音の集合を作成します。

>>> vowels = {'a', 'e', 'e', 'i', 'o', 'u', 'u', 'u'}
>>> vowels
{'o', 'a', 'u', 'e', 'i'}

上記のコードを、set関数を用いても実現できます。set関数は、任意のシーケンス(文字列など)を渡すと集合を作成してくれます。

>>> vowels2 = set('aeeiouu')
>>> vowels2
{'o', 'a', 'e', 'i', 'u'}

上下のコードの1行目は同じことを行っています。どちらも新しい集合オブジェクトを変数に代入しています。

次に、母音の集合を作成して、word変数に値を代入します。

>>> vowels = set('aeiou')
>>> word = 'hello'

unionは集合を結合する

vowels集合とword変数の値からなる文字の集合の和集合を取ることを考えます。word変数をset関数に渡してその場で2つ目の集合を作成します。

そして、その集合をvowelsが提供するunionメソッドに渡します。この呼び出しの結果は別の集合になり、その結果の集合を別の変数(ここではuという名前)に代入します。

この新しい変数は、両方の集合内のオブジェクトの組み合わせ(和集合)です。

>>> u = vowels.union(set(word))
>>> u
{'o', 'a', 'h', 'l', 'e', 'i', 'u'}

(和集合を作成した後の)よくある要件は、この結果の集合をソート済みリストに変換することです。sorted関数とlist関数を組み合わせて実現します。

>>> u_list = sorted(list(u))
>>> u_list
['a', 'e', 'h', 'i', 'l', 'o', 'u']

differenceは共有していないものを示す

differenceメソッドは、2つの集合を指定すると一方の集合にはあっても他方にはないものを示します。

>>> d = vowels.difference(set(word))
>>> d
{'a', 'i', 'u'}

differeceはvowlesオブジェクトとset(word)のオブジェクトを比較し、vowelsにはあってset(word)にはないオブジェクト(ここではd)の新しい集合を返します。

intersectionは共通点を示す

intersectionはある集合のオブジェクトを別の集合のオブジェクトと比較して、共通するオブジェクトを表示します。

>>> i = vowels.intersection(set(word))
>>> i
{'e', 'o'}


サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪