数学的演算 パート2
CoddyのPythonジャーニー「Logic & Flow」セクションの一部 — レッスン 34/78。
複数の集合の積集合や複数の集合間の差集合など、より高度な概念に焦点を当てながら、集合を用いた数学的演算の探索を続けていきましょう。
複数の集合の積集合(& または intersection()): & 演算子や intersection() メソッドを繰り返し使用するか、あるいは intersection() メソッドに複数の集合を渡すことで、複数の集合間で共通する要素を見つけることができます。
set1 = {1, 2, 3}
set2 = {2, 3, 4}
set3 = {3, 4, 5}
intersection_result = set1 & set2 & set3
# または
intersection_result = set1.intersection(set2, set3)
print(intersection_result)
# 出力: {3}複数の集合間の差集合 (- または difference()): - 演算子または difference() メソッドを使用することで、複数の他の集合と比較して、最初の集合にのみ存在する要素を見つけることができます。これは、最初の集合から複数の集合を差し引くことによって行われます。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6}
set3 = {5, 6, 7}
difference_result = set1 - set2 - set3
# または
difference_result = set1.difference(set2, set3)
print(difference_result)
# 出力: {1, 2, 3}これらの例では、まず3つの集合の積集合を求め、その結果、3つの集合すべてに共通する要素のみを含む集合が得られます。次に、複数の集合の差集合を求めます。その結果、set2とset3の要素を差し引いた後、set1にのみ存在する要素を含む集合が得られます。
チャレンジ
簡単あなたが、メンバーが興味に基づいて異なるグループに分けられている独占的なクラブを運営していると想像してください。あなたは以下のことを知りたいと考えています:
- すべてのグループに共通の興味を持っているメンバーは誰ですか?
- 最初のグループだけに所属し、他のどのグループにも属していない、真にユニークなメンバーは誰ですか?
以下のプログラムを作成してください:
- 3つの興味グループのメンバーを表す3つのセット、
group1、group2、およびgroup3を受け取ります。 - 3つのグループすべての積集合(intersection)(すべてのグループに共通するメンバー)を見つけて出力します。
- 他の2つのグループに対する
group1の差集合(difference)(最初のグループだけに存在するメンバー)を見つけて出力します。
最終的な出力形式については、テストケースを確認してください!
チートシート
intersectionを使用して、複数の集合に共通する要素を見つけます:
set1 = {1, 2, 3}
set2 = {2, 3, 4}
set3 = {3, 4, 5}
# & 演算子を使用する
intersection_result = set1 & set2 & set3
# intersection() メソッドを使用する
intersection_result = set1.intersection(set2, set3)
differenceを使用して、他の複数の集合と比較して最初の集合にのみ存在する要素を見つけます:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6}
set3 = {5, 6, 7}
# - 演算子を使用する
difference_result = set1 - set2 - set3
# difference() メソッドを使用する
difference_result = set1.difference(set2, set3)
自分で試してみよう
group1 = eval(input())
group2 = eval(input())
group3 = eval(input())
# 以下にコードを記述してください
# 結果を出力します
print("Members in all groups:", sorted(list(intersection_result)))
print("Unique members in group1:", sorted(list(difference_result)))このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。