Pythonの集合について書いています。
集合について解説した後に、下記のことを試しています。
・集合の要素を追加する
・集合の要素を削除する
・集合を結合する(和集合・積集合・差集合)
公式サイトのこちらに集合についての情報が書いています。
載せているコードはPythonのバージョン3.11.0で動作を確認しています。
Pythonの集合とは?
Pythonの集合は重複がなく、順序も決まっていない値の集まりです。
順序がないため、集合で作った変数には要素番号でアクセスすることはできません。
集合を作るには下記のようにします。
fruits = {'apple', 'banana', 'orange'}
波括弧({}
)の中にカンマ(,
)で値を並べます。
こうすると、3つの要素を持った集合になります。
重複する値を定義することはできないので、同じ値を入れると下記のようにまとめられます。
fruits = {'apple', 'banana', 'orange', 'apple', 'banana', 'apple'}
print(fruits) # {'banana', 'apple', 'orange'}
集合の値を参照する
集合の値をfor文で全部を参照する方法と、in句で含まれているか確認する方法についてです。
for文でループする
集合に要素番号(キー)でアクセスすることはできません。
for文でループして、要素を取得することは可能です。
fruits = {'apple', 'banana', 'orange', 'grape'}
for fruit in fruits:
print(fruit)
fruits変数に4つの要素を入れた集合を作りました。
次の処理で、for文を使ってループしています。
fruit変数に集合の値がループするたびに設定されます。
このプログラムの実行結果は下記のようになります。
banana
apple
grape
orange
集合は順序がないため、実行すると出力される順番が変わります。
inで含まれているか確認する
inを使うことで、集合に値が含まれているか確認できます。
fruits = {'apple', 'banana', 'orange'}
if 'orange' in fruits:
print('orangeが含まれる')
最初にfruits変数に3つの要素で集合を作っています。
次の処理で、if文の判定箇所にinを使用しました。
fruits変数に’orange’がないか確認しています。
今回は含まれるので、Trueが返ってきます。
結果として「orangeが含まれる」を出力して処理が終わります。
このようにinを使うことで、含まれているか確認することができます。
含まれていればTrue、含まれていない場合にはFalseが返ってきます。
集合に要素を追加する
集合に値を追加する方法です。
値をaddで追加する
値をaddメソッドを使うことで、集合に追加できます。
fruits = {'apple', 'banana', 'orange'}
fruits.add('peach')
fruits.add('grape')
print(fruits) # {'grape', 'banana', 'orange', 'peach', 'apple'}
最初に3つの要素で、fruits変数に集合を作りました。
次の処理で、addメソッドを使って値を追加しています。
今回は’peach’と’grape’を追加しました。
print関数で出力すると、追加できたことが確認できます。
集合は順序が決まっていないため、出力結果は毎回変わります。
updateで集合を追加する
updateメソッドを使うと、作成した集合に他の集合を追加することができます。
fruits1 = {'apple', 'banana'}
fruits2 = {'orange', 'grape'}
fruits1.update(fruits2)
print(fruits1) # {'grape', 'orange', 'apple', 'banana'}
最初にfruits1変数とfruits2変数の2つの集合を作っています。
次の処理で、fruits1からupdateメソッドを呼び出して、fruits2を追加するようにしました。
こうすることで、fruits1の集合に対して、fruits2の集合の要素が追加されます。
print関数で出力すると、fruits1に値が追加されたことが確認できました。
updateメソッドはイテラブルなオブジェクトなら渡せます。
そのため、下記のようにリストから追加することもできます。
fruits1 = {'apple', 'banana'}
fruitsList = ['orange', 'grape']
fruits1.update(fruitsList)
集合の値を削除する
集合の値を削除する方法です。
removeで削除する
removeメソッドを使うことで、集合から値を削除することができます。
fruits = {'apple', 'banana', 'orange'}
fruits.remove('banana')
print(fruits) # {'apple', 'orange'}
fruits変数に3つの要素で集合を作りました。
次の処理でremoveメソッドを使って要素を削除しています。
removeメソッドには削除する要素を渡しています。
今回は’banana’を削除します。
print関数で出力すると、削除されたことが確認できました。
値が存在しないとエラーになる
removeメソッドは削除する予定の値がない場合にはエラーになります。
例えば、下記のように集合に存在しない値を渡した時です。
fruits = {'apple', 'banana', 'orange'}
fruits.remove('banana123')
この場合には、下記のようにKeyErrorが発生します。
KeyError: 'banana123'
値がない場合は無視したいときには、次のdiscardメソッドを使いましょう。
discardで削除する
discardメソッドでも、集合の値を削除することができます。
removeメソッドとの違いは、値が存在しなくてもエラーにならないところです。
fruits = {'apple', 'banana', 'orange'}
fruits.discard('banana123')
fruits.discard('banana')
print(fruits) # {'apple', 'orange'}
最初にfruits変数に3つの要素で集合を作りました。
次の処理で、discardメソッドを使って、集合から値を削除しようとしています。
banana123
は存在しないので削除されず、discardではエラーになりません。
その次にbanana
を削除しています、存在するため削除されます。
結果を確認すると「{'apple', 'orange'}
」が出力されました。
削除されたことが確認できました。
clearで空にする
全ての値を削除するときには、clearメソッドを使います。
fruits = {'apple', 'banana', 'orange'}
fruits.clear()
print(fruits) # set()
fruits変数に3つの要素で集合を作っています。
次の処理で、clearメソッドを使って削除しました。
print関数で出力すると、要素がなくなって、空になっていることが確認できました。
集合を結合する
集合を結合して、和集合・積集合・差集合を求める方法です。
和集合
和集合を求めるには「|
」またはunionメソッドを使います。
fruits1 = {'orange', 'banana', 'apple'}
fruits2 = {'banana', 'peach', 'lemon'}
fruits = fruits1 | fruits2
print(fruits) # {'lemon', 'banana', 'peach', 'orange', 'apple'}
fruits1変数とfruits2変数に集合を作りました。
次の処理で「|
」を使って、和集合を求めて、結果をfruits変数に代入しています。
print関数で出力すると、和集合になっていることが確認できました。
下記のようにunionメソッドを使っても、同じように和集合を求めることができます。
fruits = fruits1.union(fruits2)
積集合
積集合を求めるには「&
」またはintersectionメソッドを使います。
fruits1 = {'orange', 'banana', 'apple'}
fruits2 = {'banana', 'peach', 'lemon'}
fruits = fruits1 & fruits2
print(fruits) # {'banana'}
fruits1変数とfruits2変数に集合を作りました。
次の処理で「&
」を使って、積集合を求めて、結果をfruits変数に代入しています。
print関数で出力すると、「banana
」だけになって、積集合になっていることが確認できました。
下記のようにintersectionメソッドを使っても、同じように積集合を求めることができます。
fruits = fruits1.intersection(fruits2)
差集合
差集合を求めるには「-
」またはdifferenceメソッドを使います。
fruits1 = {'orange', 'banana', 'apple'}
fruits2 = {'banana', 'peach', 'lemon'}
fruits = fruits1 - fruits2
print(fruits) # {'apple', 'orange'}
fruits1変数とfruits2変数に集合を作りました。
次の処理で「-
」を使って、差集合を求めて、結果をfruits変数に代入しています。
print関数で結果を出力すると「{'apple', 'orange'}
」となりました。
fruits1から、fruits2と同じ要素の「banana
」がなくなって、差集合が求められたことが確認できます。
下記のようにdifferenceメソッドを使っても、同じように差集合を求めることができます。
fruits = fruits1.difference(fruits2)
コメント