Pythonのimmutableとhashable混乱
朝5時起床。今日は水曜日。雨降ってたかな?
間に合わなかったので、朝食は本厚木のカフェでモーニング。
朝、メールチェックしたら、おやじ(元上司で今無職)からメールが来ていた。
Meが送ったメールに対して
---------
ハッシュ(一致不一致)またはB木(範囲)以外のアルゴリズムを使う
ハッシュ(一致不一致)またはB木(範囲)以外のアルゴリズムを使う
ビッグデータ処理なんてないのになぁ、
(最初の1回はO(n)でハッシュまたは、およびB木を作るが、それ以降はO(1))
根本的なこと知らないで、pythonでも機械学習でもないでしょ!
という印象です。
---------
---------
という手厳しいコメントをもらい、ちょっと落ち込んだので、今日は一日中
immutableとhashableについて、調べまくりました。
以下、immutableとhashableの違いについての参考記事です。
・https://qiita.com/yoichi22/items/ebf6ab3c6de26ddcc09a
・https://stackoverflow.com/questions/2671376/hashable-immutable
・https://docs.python.org/ja/3/reference/datamodel.html#object.__hash__
・https://stackoverflow.com/questions/2671376/hashable-immutable
・https://docs.python.org/ja/3/reference/datamodel.html#object.__hash__
Meの結論としては、以下になります。
----------
turpleのimmutableは、実はmutableなリストを要素に持つこともできる。
----------
turpleのimmutableは、実はmutableなリストを要素に持つこともできる。
その場合は、辞書のキーにはできない。
辞書のキーは、hashableでなければならない。
hashableの前提としてハッシュ値がimmutableでなければならないが、immutableなオブジェクトが必ずしも
hashableであるとは限らない。
(Pythonのimmutableはちょっと中途半端な概念。しかも相互の定義に相互を参照していて、撞着を感じる。)
そしてhashable(__hash__を定義する)でmutableなオブジェクトを作成することもできるが、
それは言語仕様として禁じられている。
詳細は、下記ドキュメント参照のこと。
これをPythonデータサイエンス講座二日目の最初に補講として説明しようと思う。
やっぱり集中して、Pythonデータサイエンス講座の二日目、三日目の準備はしないといけないなと感じた。
ゼロタッチコンフィグの作業を片手間に手を付けている場合ではないなと。
とりあえず今日は定時に帰宅。
【今日の読書】
・Fluent Python ―Pythonicな思考とコーディング手法 Luciano Ramalho著(P.322/787読了)
・Fluent Python ―Pythonicな思考とコーディング手法 Luciano Ramalho著(P.322/787読了)
・現場で使える! NumPyデータ処理入門 機械学習・データサイエンスで役立つ高速処理手法 (AI & TECHNOLOGY) 吉田拓真著(P.123/511読了)
・変分ベイズ学習 (機械学習プロフェッショナルシリーズ) 中島伸一著(P.38/144読了)
・データ分析ツールJupyter入門 掌田津耶乃著(P.352/438読了)
・Matplotlib&Seaborn実装ハンドブック (Pythonライブラリ定番セレクション) チームカルポ著(P.162/314読了)
・退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング Al Sweigart著(P.184/549読了)
・pandasクックブック ―Pythonによるデータ処理のレシピ― Theodore Petrou著(P.133/360読了)
・Pythonによるあたらしいデータ分析の教科書 (AI&TECHNOLOGY) 寺田学著(P.269/316読了)
・2週間でできる! スクリプト言語の作り方 (Software Design plus) 千葉滋著(P.118/361読了)
・線形代数セミナー: 射影,特異値分解,一般逆行列 金谷健一著(P.35/141読了)
早々、寝る。