【Python】実際に見たちょっとあれなコード達と改善案

【Python】実際に見たちょっとあれなコード達と改善案

自戒も込めて書き記していきます。そして世の中にいいコードがたくさん生まれますように。

実際の製品の中でも速度に大きく問題があるようなコードが動いていることも良くあるので、やはり勉強は大切だし差別化にもなりますよね…
見つける度に追加していきます…

listじゃなくてsetで比較するのだ

setは被りなく順序なく、要素を格納してくれる機能です。(setの紹介はこちら

なのに何故要素に順序がある前提で比較してしまうんだ…リストにしてしまうんだ…

順序関係なく単純に中身を確認したい場合はset同士で比較しましょう。

 listから簡単な条件で要素を抽出する時は内包表記を使おう

速度的にも内包表記の方が有利なことが多いです。(参考

ただ、それよりもPythonを書いている人の多くは内包表記を使ってリストを抽出することに慣れています。
そのためこの方が色々な人が見たときに「あー、これは○○なリストを作っているだけなんだな」というのが一瞬で分かります。

他の人に合わせる。大切。

なぜ辞書のキー判定にlistを使ったのだ!?

このような用途のためにリストを生成する必要はありません。

  • 存在有無の確認ならsetを使う
  • ループの中で毎回生成せず、事前に生成しておく
  • そもそもdict in keyでチェックできるのでそうする

実際にはループ内部での処理を何かしら行うので、ここまでは変化はありませんが、単純にループ部分だけで比較すると、約1/800の実行時間になります。
変わりすぎ…。

 

Pyhonカテゴリの最新記事