職業訓練Python基礎演習七日目(id関数の不思議)
今日は火曜日。雨のち曇り。
1時半頃起きて、メイン講師の講義資料レビューを30分ほどして再び寝た。
5時起床。
6時過ぎに家を出て会社。
朝食は会社近くのカフェでモーニング。
9時~15時半まで職業訓練Python基礎演習七日目。
台風19号明けだったけど、受講生は皆出席。
午前中は先週の復習。
午後は複合データ型であるリストに加え、タプル、集合を講義した。辞書は明日。
で、Meは内職をしていて、以下のid関数が何故同じ値を返せるのか調べていた。
--------
s="abca"
print(id(s[0]))
print(id(s[len(s)-1]))
--------
--------
s="abca"
print(id(s[0]))
print(id(s[len(s)-1]))
--------
文字列なら連続領域で取らないと性能的に落ちると思うのだが、最初の'a'も末尾の'a'も
同じidを返している。
でソースコード(builtin_id関数)を見るとPyObjectへのアドレスを単に返しているだけだ。
それを見ると第2引数のPyObjectは、id(s[0])とid(s[len(s)-1])で同じPyObjectへのアドレスを
返していることになる。
これだと文字列型の比較など一連の操作の性能が著しく悪くなるはずなんだが、本当にPythonは
文字列を個々の文字オブジェクトへの参照のリストとして実装されているんだろうか。。。。
一応、id関数の仕様は下記になっている。
------
Return the “identity” of an object.
This is an integer which is guaranteed to be unique and constant for this object during its lifetime.
Two objects with non-overlapping lifetimes may have the same id() value.
CPython implementation detail: This is the address of the object in memory.
------
Return the “identity” of an object.
This is an integer which is guaranteed to be unique and constant for this object during its lifetime.
Two objects with non-overlapping lifetimes may have the same id() value.
CPython implementation detail: This is the address of the object in memory.
------
謎だ。。。ということで、未解決事件になった。誰か分かる人がいたら教えてほしい。
後の残りは内職で「ベイズ統計モデリングによるデータ分析入門」を読書し、R言語を触っていた。
大分、R言語に慣れてきた。
そして無事、講義は終わった。
定時までメイン講師と教育関係の取締役とでimmutableとhashableの違いについて議論。
疲労困憊。定時退勤。
お風呂入ったので、21時~フジテレビにてドラマ「まだ結婚できない男」(第2話)を観た。
まあまあだったな。寝る。
明日は職業訓練Python基礎演習八日目。頑張る。
【やることリストのタスク】
・神奈川県職業訓練Python養成科 SQL講義準備(講義日程:11月26日~28日)
・Python講座カリキュラム体系の再検討と講義資料の作成
【今日の読書】
・スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ) 中山清喬(再読中)
・スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ) 中山清喬(再読中)
・実践Data Scienceシリーズ RとStanではじめる ベイズ統計モデリングによるデータ分析入門 馬場 真哉(P.152/347読了)
・Kaggleで勝つデータ分析の技術 門脇 大輔
・わかりやすいパターン認識 石井 健一郎
・続・わかりやすいパターン認識―教師なし学習入門― 石井 健一郎
・機械学習スタートアップシリーズ これならわかる深層学習入門 (KS情報科学専門書) 瀧 雅人(P.199/330読了)
・工学系の関数解析 小川 英光(P.212/283読了)
・みんなのR 第2版 Jared P. Lander(P.82/575読了)
・エントロピーの正体 アリー・ベン=ナイム(P.56/184読了)
・逆数学:定理から公理を「証明」する ジョン・スティルウェル(P.27/205読了)