集合の要素数を調べたり、集合と集合の包含関係を調べたり、集合と集合から和/差/交差/対称差からなる新たな集合を得たりする方法を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
# sの要素数を調べる
s = {0, 1, 2, 3}
l = len(s)
print(l) # 4
# sに要素xが含まれているかどうかを調べる
print(1 in s) # True
print(5 in s) # False
# sに要素xが含まれていないかかどうかを調べる x not in s
print(1 not in s) # False
print(5 not in s) # True
# s1とs2が同じ(要素のみを含んでいる)かどうかを調べる
s1, s2 = {0, 1, 2}, {0, 1, 2}
print(s1 == s2) # True
# s1とs2が異なるかどうかを調べる
s1, s2 = {0, 1, 2}, {0, 1, 3}
print(s1 != s2) # True
# s1とs2が互いに素かどうかを調べる
s1, s2 = {0, 1, 2}, {3, 4, 5}
print(s1.isdisjoint(s2)) # True
s1, s2 = {0, 1, 2}, {2, 3, 4}
print(s1.isdisjoint(s2)) # False
# どちらかの集合がもう一方の集合に包含されるかどうかを調べる
s1, s2 = {0, 1, 2, 3}, {0, 2}
print(s1.issubset(s2)) # False
print(s2.issubset(s1)) # True
print(s2 <= s1) # True
s1, s2 = {0, 1, 2}, {0, 1, 2}
print(s1 <= s2) # True
# s1がs2の真部分集合かどうかを調べる
s1, s2 = {0, 1, 2}, {0, 1, 2, 3}
print(s1 < s2) # True
s1, s2 = {0, 1, 2}, {0, 1, 2}
print(s1 < s2) # False
# どちらかの集合がもう一方の集合を包含するかどうかを調べる
s1, s2 = {0, 1, 2, 3}, {0, 1, 2}
print(s1.issuperset(s2)) # True
print(s2.issuperset(s1)) # False
print(s1 >= s2) # True
s1, s2 = {0, 1, 2}, {0, 1, 2}
print(s1 >= s2) # True
# s1がs2の真上位集合かどうかを調べる
s1, s2 = {0, 1, 2, 3}, {0, 1, 2}
print(s1 > s2) # True
s1, s2 = {0, 1, 2}, {0, 1, 2}
print(s1 > s2) # False
# s1とs2の和からなる集合を作成する
s1, s2 = {0, 1, 2}, {1, 2, 3}
result = s1.union(s2)
print(result) # {0, 1, 2, 3}
print(s1) # {0, 1, 2}
result = s1 | s2
print(result) # {0, 1, 2, 3}
print(s1) # {0, 1, 2}
s3 = {3, 4, 5}
result = s1 | s2 | s3
print(result) # {0, 1, 2, 3, 4, 5}
# s1とs2の差からなる集合を作成する
s1, s2 = {0, 1, 2, 3, 4, 5}, {1, 3, 5}
diff = s1.difference(s2)
print(diff) # {0, 2, 4}
s1, s2 = {0, 1, 2, 3, 4, 5}, {0, 2, 4}
diff = s1 - s2
print(diff) # {1, 3, 5}
# s1とs2の交差からなる集合を作成する
s1, s2 = {0, 1, 2, 3}, {2, 3, 4, 5}
intersection = s1.intersection(s2)
print(intersection) # {2, 3}
intersection = s1 & s2
print(intersection) # {2, 3}
# s1とs2の対象差からなる集合を作成する
s1, s2 = {0, 1, 2, 3, 4, 5}, {3, 4, 5, 6, 7, 8}
symdiff = s1.symmetric_difference(s2)
print(symdiff) # {0, 1, 2, 6, 7, 8}
s1, s2 = {0, 1, 2, 3, 4, 5}, {4, 5, 6, 7, 8, 9}
symdiff = s1 ^ s2
print(symdiff) # {0, 1, 2, 3, 6, 7, 8, 9}
以下に集合で行える各種操作を一覧する。表中に出てくるs/s1/s2は全て何らかの要素を含んだ集合オブジェクトとする。
操作 | メソッド/演算子 |
---|---|
sの要素数を調べる | len(s) |
sに要素xが含まれているかどうかを調べる | x in s |
sに要素xが含まれていないかかどうかを調べる | x not in s |
s1とs2が同じ(要素のみを含んでいる)かどうかを調べる | s1 == s2 |
s1とs2が異なるかどうかを調べる | s1 != s2 |
s1とs2が互いに素かどうかを調べる | s1.isdisjoint(s2) |
s1がs2に包含されるかどうかを調べる | s1.issubset(s2) s1 <= s2 |
s1がs2の真部分集合かどうかを調べる | s1 < s2 |
s1がs2を包含するかどうかを調べる | s1.issuperset(s2) s1 >= s2 |
s1がs2の真上位集合かどうかを調べる | s1 > s2 |
s1とs2の和集合を作成する | s1.union(s2) s1 | s2 |
s1とs2の交差を作成する | s1.intersection(s2) s1 & s2 |
s1からs2の要素を削除した差集合を作成する | s1.difference(s2) s1 - s2 |
s1とs2の対象差集合を作成する | s1.symmetric_difference(s2) s1 ^ s2 |
集合に対する操作 |
以下では、これらの操作を幾つかの分野に分けて見ていく。
リストなどの反復可能オブジェクトと同様に、集合の要素数はlen関数で調べられる。また、特定の要素が集合に含まれているか/含まれていないかはin演算子/not in演算子で調べられる。2つの集合が同じか(同じ要素だけを含んでいるか)どうかは==演算子や!=演算子で調べられる。
以下に例を示す。
# sの要素数を調べる
s = {0, 1, 2, 3}
l = len(s)
print(l) # 4
# sに要素xが含まれているかどうかを調べる
print(1 in s) # True
print(5 in s) # False
# sに要素xが含まれていないかかどうかを調べる x not in s
print(1 not in s) # False
print(5 not in s) # True
# s1とs2が同じ(要素のみを含んでいる)かどうかを調べる
s1, s2 = {0, 1, 2}, {0, 1, 2}
print(s1 == s2) # True
# s1とs2が異なるかどうかを調べる
s1, s2 = {0, 1, 2}, {0, 1, 3}
print(s1 != s2) # True
Copyright© Digital Advantage Corp. All Rights Reserved.