Python 集合型の基本

Python学習【365日チャレンジ!】26日目のマスターU(@Udemy11)です。

Windows7のサポートが終了しているのに、まだWindows7を使っている人からどうしたらいいのか相談されたので、

Window10にアップグレードしたほうがいいんじゃない?

と答えておきました。

2020年1月14日にMicrosoftのサポートが切れて、今後セキュリティーに関する脆弱性などが見つかってもパッチを当ててくれなくなります。

網戸に例えると、これまでは網戸に穴が空いていることが見つかるたびに、職人さんが穴を塞いでくれていたわけですが、網戸職人さんが退職してしまっているので、穴を見つけたとしても、穴が空いたままの状態になってしまいます。

Windows7 Windows10

この状態だと蚊などの虫が自由に家の中に入ってこれるので、夏までほっておくと大変なことになります。

なので、新しい網戸に張り替える必要があるわけです。

この例では、網戸がWindows7で、新しい網戸がWindows10ということになり、家財道具はパソコンに収められた重要なデータになります。

もちろん、蚊などの虫がいない場所(ネットワークから遮断された場所)で使うのであれば問題はありませんが、ものがすべてインターネットに繋がるIoTの時代にあって、そんなことは非現実的です。

なので、Windows7を利用している場合は速攻Windows10にアップグレードしたほうがいいですよ。

今現在でも条件が整っていれば、Windows7や8からWindows10へ無償アップグレードできる可能性があるとのことなので、上記ページを参考にWindows10にアップグレードしてみてはどうでしょうか?

昨日の復習

昨日は、辞書型の使いどころを学習しました。

商品と価格、IDとパスワードなど、対になったデータを扱うときに便利に使うことができるのが辞書型です。

apple = {
               'iPhone8': 800,
               'iPhoneX': 1000,
               'iPhone11: 1200,
               'iPadPro': 1500,
}
 
print(apple['iPhoneX'])

出力結果

1000

商品と値段が格納された辞書型から商品名を入れると価格が返される場合などは、リスト型よりも辞書型を使うほうが処理も早くなるとのことでした。

もっと講座が進んで、実際に使う事例が出てこないことには、まだまだ使うイメージが沸かないのですが、リスト型、タプル型、辞書型のイメージは掴めてきました。

それでは、本日の学習に入りたいと思います。

集合型の基本

集合型は、bracesの波括弧でくくられますが、辞書型のように、2つの値が対になっておらず、一つ一つの値が格納されます。

出力の際に、重複する値が一つにまとめられて表示されます。

>>> a = {1, 2, 2, 3, 4, 5, 2, 3, 5, 6}
>>> a
{1, 2, 3, 4, 5, 6}
>>> type(a)
<class 'set'>
>>> b = {2, 3, 4, 4, 2, 7}
>>> b
{2, 3, 4, 7}

この例の場合は、変数aや変数bに複数の値を代入しているのですが、出力すると重複した値は一つにまとめられています。

typeを出力すると、set型(集合型)と出力されます。

集合型の特徴は、

  • 複数の同じ値は一つにまとめられる
  • indexの位置情報がない

リスト型だと、数値が収められている位置情報が存在しますが、集合型だと数字の位置情報を求めたり、indexの値を求めることができません。
同じ値はまとめてしまうので、辞書型には位置情報(index)が存在しません。

2つの変数の比較

辞書型では、定義された2つの変数を比較して、同じ数値を見つけたり、どちらにも入っている値を調べたりすることが可能です。

>>> a = {1, 2, 2, 3, 4, 5, 2, 3, 5, 6}
>>> b = {2, 3, 4, 4, 2, 7}
>>> a - b
{1, 5, 6}
>>> b - a
{7}
>>> a & b
{2, 3, 4}
>>> a | b
{1, 2, 3, 4, 5, 6, 7}
>>> a ^ b
{1, 5, 6, 7}

演算子の-(マイナス)を使うことで、aの中に入っている値からbの中に入っている値を引いた集合を求められます。
変数を逆にすれば、反対の結果が得られます。

Ampersand(アンパサンド)【&】を使うことで、aにもbにも入っている値(aかつb)の集合を求めることができます。
ちなみに、演算子の+(プラス)を使っても同じ結果が得られそうですが、集合型の場合はエラーになってしまいます。

vertical bar(バーチカルバー)【|】を使えば、aもしくはbに入っている値(aまたはb)の集合を求められます。

caret(キャレット)【^】は、aかbに入っているけどどちらかにしか入っていない値(aまたはbかつ(aかつbではない))の集合を求めます。

経路は一つではない

講座を受講しながら、わからないことが出てくるとネットで調べるようにしています。

講座は、すべてを網羅しているわけではないので、講座に出てきたメソッドや使い方を理解すれば、いろいろな疑問が湧いてくるとおもいます。

なので、疑問が出てきたときは、ネットで自己解決する方法を探り、それでもわからない場合は講師に質問すればいいと思います。
いつでも講師に質問できるのがUdemyの魅力なので、ぜひ活用してみてください。

現在受講している酒井さんのPython講座はこちらです。

Udemy講師 酒井さん プログラミング Python

旅行は出発地点と目的地は同じでも途中の経路はたくさんあります。
飛行機を使うか、電車を使うか、車を使うかなど、最終的には目的地にたどり着けますが、途中の経路は自分で選択することができます。

プログラムも同じように、同じ結果でも複数のコードの書き方があり、その中で最もシンプルで高速なコードの書き方を求めるのが大切だと思います。

選択肢を増やすために、しっかりと基礎基本を押さえておきましょう!

ではでは、Good Python!