Python3 | ②セット(集合)
こんにちは、現役理系大学生のShogoです!
今回は、Python3超入門講座第2弾です!
前回の記事を読んでいない方は、こちらからご覧ください。
今回の内容は、「セット」です。セットは、集合の計算によく用いられるものです。セットなどの型は混同しやすいので、しっかりと違いを理解していきましょう!
開発環境
開発環境は、VScodeです。
VScodeでのPythonの実行方法は、以下のURLを参考にしてみてください。
2-1 セット { }
セットとは、かんたんにいうと、集合を扱うための型の1つです。
以前紹介した、リストと同じように、一度に複数の値を扱うことができます。
✅リストとセットの違い
リストとセットの違いは、要素の重複にあります。
以前紹介したように、リストは [ ] で表され、中身は重複可能です。
対して、セットは { } で表され、中身は重複しないようになっています。
number = [1, 1, 2, 3, 4, 4]
print(number) # [1, 1, 2, 3, 4, 4]
number = {1, 1, 2, 3, 4, 4}
print(number) # {1, 2, 3, 4}
以上のコードのように、リストでは出力した値がそのまま表示されています。対して、セットでは 1, 4 が重複しているので、省略された形で表示されています。
✅順序は記憶されない
また、セットでは順序が記憶されません。
例えば、次のように順序がバラバラでも、出力結果はおなじになります。
number = {1, 1, 2, 3, 4, 4}
print(number) # {1, 2, 3, 4}
number = {4, 2, 1, 3, 1, 4}
print(number) # {1, 2, 3, 4}
2-2 和集合
A = {1, 2, 3}
B = {3, 4, 5}
wa = A | B
print(wa) # {1, 2, 3, 4, 5}
和集合を求めたい場合は、「 | 」を用います。
例えば、図のようにAを1, 2, 3、Bを3, 4, 5とします。求めたい和集合は緑の部分なので、waという変数にA | Bを使うこと求めることができます。
printでの出力結果は、3が重複していないので、和集合がきちんと求められています。
2-3 積集合
A = {1, 2, 3}
B = {3, 4, 5}
seki = A & B
print(seki) # {3}
積集合を求めたい場合は、「 & 」を用います。
同様に、Aを1, 2, 3、Bを3, 4, 5とします。求めたい積集合は緑の部分なので、sekiという変数にA & Bを使うこと求めることができます。
printでの出力結果は、3。つまり、積集合がきちんと求められています。
2-4 差集合
A = {1, 2, 3}
B = {3, 4, 5}
sa = A - B
print(sa) # {1, 2}
差集合を求めたい場合は、「 - 」を用います。
求めたい差集合は緑の部分なので、saという変数にA - Bを使うこと求めることができます。
printでの出力結果は、1, 2。Aの要素からBの要素が引かれていることがわかります。
2-5 対称差集合
A = {1, 2, 3}
B = {3, 4, 5}
taisyosa = A ^ B
print(taisyosa) # {1, 2, 4, 5}
対象差集合を求めたい場合は、「 ^ 」を用います。対称差集合とは、共通部分以外の集合のことを言います。
求めたい対称差集合は緑の部分なので、taisyosaという変数にA ^ Bを使うこと求めることができます。
printでの出力結果は、1, 2, 4, 5。つまり、共通部分の3が除かれた要素が出力されていることがわかります。
2-ex 3つ以上の場合
A = {1, 2, 3}
B = {3, 4, 5}
C = {3, 6, 7}
wa = A | B | C
print(wa) # {1, 2, 3, 4, 5, 6, 7}
seki = A & B & C
print(seki) # {3}
sa = A - B - C
print(sa) # {1, 2}
もちろん3つ以上の場合でも、同じように集合を扱うことができます。
2-practice
問題:図の集合から{4, 5}を出力しなさい。
A = {1, 2, 3, 6, 7}
B = {3, 4, 5, 6}
答え:
A = {1, 2, 3, 6, 7}
B = {3, 4, 5, 6}
sa = B - A
print(sa)
まとめ
今回は、「セット」を学習しました。
今回の例は、目視でできるものが多かったですが、実際のデータになると、サンプル数が多くとても時間がかかります。
そんなときにセット型を使って、作業の効率化を図りましょう!
質問や訂正があれば、遠慮なくこの記事にコメント、もしくは、TwitterにDMをしてください!(@shogo_python)
今回の記事が"いいね!"と思ってくれた方は、スキとフォローをよろしくおねがいします!
では、またの機会にお会いしましょう!
今回のおすすめ書籍
Python3 超入門講座 一覧はこちらから