新たな気付き(Chapter 8)
- 集合は同じ値を含まないので、リストをset()で集合にして、それをlist()でリスト化すると、重複要素の除去ができる。
- リストやタプルと同様にset(文字列)で文字列を1文字ずつバラバラにして集合にできる。ただし、重複要素は削除される。
- 集合を操作するメソッド:
- add()で要素の追加。当然同じものは追加されない。
- remove()で要素の削除。ないものを削除しようとするとエラーになる。
- clear()で全ての要素を削除して集合を空にする。
- pop()で要素を一つ切り出す。ただし、集合には順序がないので最後の要素という概念もないので何が取り出されるかはわからない。
- frozensetは変更不可の集合を作る。なので上のメソッドは使用できない。
- 内包表記もリスト同様に利用できる。
- 和集合の書き方(全ての要素):a|b|c、もしくはa.union(b,c)
- 積集合の書き方(重なる要素):a&b&c、もしくはa.intersection(b,c)
- 差集合の書き方(固有の要素):a-b、もしくはa.difference(b)
- 対称差集合の書き方(重なってない要素):a^b^c、もしくはa.symmetric_difference(b,c)
- 集合関連のメソッドは以下:
- update(b,c)で元集合にない要素が追加される。要するに和集合になる。|=演算子も同じだけど集合1個ずつになる。
- intersection_update(b)で、元集合とbの共通する要素のみの集合になる。つまり積集合になる。&=演算子と同じ。
- difference_update(b)で元集合とbの共通する要素が除去され元集合固有の要素だけが残る。つまり差集合になる。-=演算子も同じ。
- symmetric_difference(b)で元集合とbの要素の共通の要素のない元集合とbの固有の要素で構成される。つまり対称差集合になる。^=演算子も同じ。
- isdisjoint(b)で元集合とbに共通の要素がない場合はTrue、共通の要素があればFalseが返る。
- issubset(b)で元集合がbに完全に包含される下位集合である場合はTrue。<=演算子も同じ。
- issuperset(b)で元集合がbの要素を全て含みbを包含する上位集合である場合はTrue。>=演算子も同じ。