GWの自由研究(Python)

プログラミング初心者のゴールデンウィーク自由研究です。

どっちが速い?

ジャパリパークを構成する要素がフレンズであるか否かを判定するコード。

前者internal.pyはin演算子の後ろにlistを直接書いたもので,

後者external.pyはlistが代入された変数を書いたもの。

internal.py

external.py

  • internal.pyの場合ループごとにフレンズのlistを作ってしまうのではないか?

  • だとするとexternal.pyの方が速いのでは?

  • でもそこらへんはインタープリタが勝手に最適化してくれるのかな?

という漠然とした疑問があったものの,Pythonそのものの実装を紐解いて演繹的に考える知識は無いのでちょっとした実験をしてみた。

ちゃんとした実験になっている保証はない。

おバカな実験

これが実験用のコード。

exp_internal.py

exp_external.py

当初のループの外側にfor i in range(50000)を書いて同じことを50000回やらせてみた。

塵も積もれば山となる方式。

もし塵が存在するのであれば,だが。

実行環境は下記の通り。

マシン:MacBook Pro (Retina 13-inch、Early 2015)

CPU:2.7 GHz Intel Core i5

メモリ:8 GB 1867 MHz DDR3

Python:3.5.1 (default, Jan 2 2016, 18:07:30) [GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin

結果

exp_internal exp_external
1 9.799 sec 9.652 sec
2 9.817 sec 9.883 sec
3 9.774 sec 9.718 sec
4 9.844 sec 9.856 sec
5 9.823 sec 9.747 sec
6 9.935 sec 9.825 sec
7 9.701 sec 9.794 sec
8 9.782 sec 9.705 sec
9 9.871 sec 9.940 sec
10 9.709 sec 9.777 sec
average 9.8055 sec 9.7897 sec

塵はなかった。(たぶん…。)

結論

評価対象のlist(今回の場合だとfriends)に変更が発生しなく,かつ,

素数が少ない場合はinternal.pyのような書き方もアリなのかも。

オブジェと化していたIntel NUC5i3RYHにFedora 25 Workstationをインストール&ちょっとした設定

やったことメモ。

RufusでBootable USB Drive作成

 GPT UEFI用で作った

ibus-mozcで日本語入力に対応させる

 こちらが参考になりました

 Fedoraで日本語入力「ibus-mozcの導入」 | hermemo-エルメモ-

・いろいろインストール

 GNOME Tweak Tool

  GNOMEをいろいろカスタマイズさせてくれるツール

 Drop down terminal

  ショートカットキー一発で画面上部からTerminalが出てくる。

  たぶんGNOME Tweak Toolが必要。

 Application menu

  標準のメニューは使いづらいので,

  カテゴリーベースで表示してくれるこれを入れる。

  たぶんGNOME Tweak Toolが必要。

 Flat Remix

  デスクトップテーマ。

  たぶんGNOME Tweak Toolが必要。

 Atom

  言わずもがな。

 CodeLite

  C言語お勉強用のIDE

・ホームディレクトリ内の日本語名ディレクトリを英語名に変更

  $ LANG=C xdg-user-dirs-gtk-update

なんでFedora

RHEL系が良かった

ディストリビューションの特性上トラブルに見舞われやすいのではと期待したため。

 ハマれば勉強になる。

Minimal matching

6.2.1. 正規表現シンタックス

https://docs.python.jp/3/library/re.html#regular-expression-syntax

例えば正規表現 <.*><a> b <c> にマッチさせると、 <a> だけにマッチするのではなく全文字列にマッチしてしまいます。 ? を修飾子の後に追加すると、 非貪欲 (non-greedy) あるいは 最小一致 (minimal) のマッチになり、できるだけ 少ない 文字数のマッチになります。例えば正規表現 <.*?> を使うと <a> だけにマッチします。

 

実験。

 

minimal matching in python3

 

ちょっとしたhtmlとかをパースしたいときに便利そう。

pycodestyle E722 do not use bare except

E722 do not use bare except

 

pep8(pycodestyle)さんがLine 12に警告を出してくれたので調べてみた。

Idioms and Anti-Idioms in Python — Python v3.1.5 documentation

例外の種類を指定しないことをbare exceptと言うらしい。

コードで拾うべきでない例外まで拾ってしまうから使うべきでないとのこと。

 

  • 「コードで拾うべきでない例外」とは何か
  • 結局どう書くべきなのか

このあたりはまた今度調べてみよう。

微信のスタンプ

f:id:xiaoyucat:20170110181849j:image

 

你在哪里找到了这些很有意思的贴图啊。

 

贴图 tiētú

Google ピン音入力(谷歌拼音输入法)で声調符号を入力する方法

 メモがてら。

言語バーの歯車マーク(菜单)をクリック

f:id:xiaoyucat:20170109035502j:plain

菜单 > 软键盘 > 拼音符号をクリック

f:id:xiaoyucat:20170109035506j:plain

ソフトウェアキーボード(软键盘)が表示された状態で入力したいキーを押す

f:id:xiaoyucat:20170109035512j:plain

 

ソフトウェアキーボードのON/OFFはCtrl+Shift+Kで可能。

(このショートカットキーはプロパティから変更可能)

 

もっと楽な方法があったら知りたい。

 

以上。

 

软键盘 ruǎn jiàn pán

符号 fú hào

 

祝日前のお話

 私は"......"と言うに違いない。

明天不上班吧?

明天是节日。成人节。

真好啊。我也不想上班。
但是中国只有中国节日。

哈哈哈哈。对。

我上班的时候,你或许不上班。这个时候,我一定会说"真好啊。我也不想上班"。