集合と集合演算

集合

集合のクラスsetは、集合演算をすることができます。集合は重複した内容はまとめられて1つになります。下の例では、petの要素に’dog’を2つ入れようとしていますが、petの中では’dog’という要素は1つだけになります。

setsample.py

# 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はミュータブルなシーケンス型でもあるので、ミュータブルなシーケンス型に共通に使える機能が適用できます。


トップページ