集合のクラスsetは、集合演算をすることができます。集合は重複した内容はまとめられて1つになります。下の例では、petの要素に’dog’を2つ入れようとしていますが、petの中では’dog’という要素は1つだけになります。
# File: setsample.py
#
animal={'dog','cat','fish','lizard'}
mammal={'dog','cat'}
pet={'dog','dog','lizard'}
##
## 重複はなくなる
##
print(animal)
print(mammal)
print(pet)集合演算をします。ここの例ではanimalが動物、mammalは哺乳類、petは飼っている動物の種類を意味しているつもり、として下さい。
集合animalから集合petを引くことで、petに含まれていない要素、つまり飼っていない動物が得られます。petからmammalを引くと、飼っているペットの中で哺乳類ではない要素が得られます。
# 飼っていない動物は?
print(animal - pet)
# ペットで哺乳類以外
print(pet - mammal)下の例は in 演算子を使って各集合の中に、指定された要素が存在しているかどうかを調べます。in 演算子は存在していたらTrue、存在していなければFalseを返します。in 演算子は集合クラスだけではなく、文字列クラスstrやリストクラスlistといったシーケンス型のデータタイプでも使えます。
# ペットに犬はいる?
print( 'dog' in pet)
# リンゴは動物?
print( 'apple' in animal)
# トカゲは飼っていない
print( 'lizard' not in pet)
# lizardの文字列の中に'rd'はあるか
print( 'rd' in 'lizard')集合もイテレーションが出来ます。
for i in animal:
print('loop',i)クラスsetはシーケンス型の一種なのでなので、シーケンスに共通して使える機能が適用できます。
また、クラスsetはミュータブルなシーケンス型でもあるので、ミュータブルなシーケンス型に共通に使える機能が適用できます。