Python 集合型 メソッド

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

昨日、紹介したWindows10にアップグレードしたほうがいいとアドバイスした人が、無事Windows10にアップグレードできたけど、Officeが使えなくなったという相談を受けました。

Windows7のときに使っていたのが2013だったらしく、どうもプロダクトキーが無効になっているとのことでした。
Windowsのサポートに連絡して、ようやく電話がつながったと思えば、部署が違うだのでたらい回しされ、結局時間を無駄にしてしまったとか。。。

Windows10でもOfficeでも最新のものを使おうと思えば、古いライセンスを何とかしようとするより、新しいライセンスを購入して使ったほうが時間を無駄にはしません。

お金持ちにも、貧乏な人にも平等に与えられているのが時間です。

時間が有限だということに気付ける人はあまりいませんので、気づいたときにはきちんと時間を有効活用しましょう!

それでは、Python学習に入っていきましょう。

昨日の復習

昨日は、集合型(set型)の基本的な使い方を学習しました。

x = {6, 4, 2, 3, 4, 3, 1, 3}
print(x)
print(type(x))
 
y = {1, 2, 5, 4, 5, 8}
print(y)
 
print(x - y)
print(y - x)
print(x & y)
print(x | y)
print(x ^ y)

出力結果

{1, 2, 3, 4, 6}
<class 'set'>
{1, 2, 4, 5, 8}
{3, 6}
{8, 5}
{1, 2, 4}
{1, 2, 3, 4, 5, 6, 8}
{3, 5, 6, 8}

集合型(set)は、代入した際の値で重複しているものは一つにまとめられました。

集合型同士の引き算は元の集合の値から引く集合にある値取り除いた集合が求められます。
{8, 5}という出力をご覧になればわかりますが、集合型には位置情報はないので、順番が初期値から変わることがあるようです。

&(アンパサンド)を使えば、aかつbの条件を抽出できますし、aまたはbの条件なら|(バーチカルバー)を使って求めることができます。

ちなみにプラスの演算子は使えませんので、使ってしまうとエラーになります。

条件の【かつ】や【または】も一つの記号で求めることができましたね。l

今日は、集合型のメソッドを学習します。

値を加えるadd()

変数をBracesのカッコで括って値を入れたら集合型の値になります。

重複している値は、統合されたユニーク(一つだけ)の値の集合になりました。

その集合に値を加えるには、add()というメソッドを使います。

>>> x = {2, 1, 2, 4, 2, 5}
>>> x
{1, 2, 4, 5}
>>> x.add(5)
{1, 2, 3, 4, 5}
>>> x.add(4)
{1, 2, 3, 4, 5}

addメソッドは、値が集合になければ、その集合に値を加え、集合にあれば、値を加えることはしません。

値を付け加える使い方は、リスト型のappend()と役割が似たところがありますね

値を取り除くremove()

add()が値を加えるのと正反対に、値を取り除くという動作をするのがremove()です。

こちらはリストでも使えましたよね。

>>> x = {2, 1, 2, 4, 2, 5}
>>> x
{1, 2, 4, 5}
>>> x.remove(4)
>>> x
{1, 2, 5}

値を指定すれば、変数の中にある値を取り除くことができます。

集合型にもpop()があるのですが、()の中には、値を指定できませんが、remove()は、()の中に数字を入れるとエラーになります。

difference()とintersection()

difference()とintersection()の2つは-と|と同じ役割を持っています。

>>> a = {3, 2, 1, 1, 2, 5}
>>> b = {6, 3, 4, 6, 8}
>>> a
{1, 2, 3, 5}
>>> b
{8, 3, 4, 6}
>>> a - b
{1, 2, 5}
>>> a.difference(b)
{1, 2, 5}
>>> a & b
{3}
>>> a.intersection(b)
{3}

difference()は、aからbを除いた集合を求めるメソッドで、intersection()は、aかつbの集合を求めるメソッドです。
記号を一つ記載するほうがコードはシンプルになりますね。

値を空にするclear()

集合の値を空にするメソッドがclear()ですが、辞書型と違って、返ってくる答えはset()になります。

>>> a = {1, 2, 5, 3, 4, 6}
>>> a.clear()
>>> a
set()
>>> x = {'i': 10, 'j': 20}
>>> x.clear()
>>> x
{}

これは、定義された変数のタイプが辞書型なのか、集合型なのかわかるように、このように出力方法を分けているからです。

プログラミングを勉強していると、記号や記載方法にきちっとしたルールがあって、細かいところまで決められているので、Pythonなどの言語を開発した人の頭の中ってどんななってんだろうと疑問に思うことがあります。

helpを有効活用

一部のコアなプログラマー以外でメソッドをすべて暗記している人って稀だと思います。

つまり、多くのプログラマーは、その時々によって、help()を活用してメソッドの使い方を確認しています。

いつでも参照できるhelp()があることによって、そんなにきっちり憶えなくてもすぐに情報にアクセスできるということです。

特定のメソッドでわからない使い方が出てきたときにhelp()を使って憶えていくようにしましょう。

すべての働きを憶えていなくても、こんな働きだったかな?と頭の片隅にでもおいておけば、実際に出てきたときに、help()で調べることができるんです。

自分で調べて自己解決する癖をつけておきましょう

それでは今日も、Good Python!