# ミノ駆動本_読書py[14] みんなのメモ ###### tags: `ミノ駆動本` - このメモはWebに公開されています(HackMDチーム) - リンクを知っている人は見られます - HackMDにログインして編集できます ## お願い事項 https://twitter.com/MinoDriven/status/1541334416622256130 > 【お願い】 拙著『良いコード/悪いコードで学ぶ設計入門』に関する情報発信について。 ブログ等で発信の際は、引用の範囲を超え、著作権侵害となる場合は勿論のこと、 拙著の詳細内容が分かるような表現での公開はお控え頂けると助かります。 ご感想や拙著に基づく試行錯誤は歓迎です。 #ミノ駆動本 とミノ駆動さんが仰られていますので、勉強会そのものでも詳細内容がわかる記述はしないように気をつけていきましょう。 ### 今を楽しもう(録画はしないでね) ちょっとまた聞き返したいなと思う気持ちもあると思いますが、 記録に残らないことで参加者の方も発言しやすさが生まれるところは存在すると考えています。 よって、リアルタイムでの参加あるいはHackMDを確認いただくという対応でお願いします。 ## このメモについて このメモは ミノ駆動本_読書py[14] のメモです https://pythonista-books.connpass.com/event/277119/ 読む範囲: 7章 ミノ駆動本のサポートページより、Javaのサンプルコードが見られます。 https://gihyo.jp/book/2022/978-4-297-12783-1/support ## 読書会の流れ * 20:00〜20:30 **自由参加**のもくもく会(個人作業) - 事前に読む時間がとれなかった方はここで読んじゃいましょう(ざっとで大丈夫です) - 合わせて、この**HackMD**に話したいことを各自書いてください - ログインすれば書ける設定にしています - ここがわからん、ここはわかった お気軽に書き込んでみてください - HackMDの書き込みに投票し、みんなが気になるところをわいわい読み解いていきます * 20:30〜22:00 読書会本編(みんなでわいわい) * Discordでスライド共有して別途案内します * 20:30開始の本編では、「わたしこれ気になる!」 という話題に `:+1:` と書いて投票します。 * :+1: する上限はありません。 気になる話題に全部 :+1: しちゃいましょう。 ただし1つの話題には1個だけ:+1:でお願いします * 票数が多い話題から話していきます。 ### 7 コレクション ―ネストを解消する構造化技法― #### 7.1 わざわざ自前でコレクション処理を実装してしまう - Pythonだと・・・ - list.index() - >list.index(x[, start[, end]]) リスト中で x と等しい値を持つ最初の要素の位置をゼロから始まる添字で返します。 該当する要素がなければ ValueError が送出されます。 任意の引数である start と end はスライス記法として解釈され、リストの探索範囲を指定できます。返される添字は、start 引数からの相対位置ではなく、リスト全体の先頭からの位置になります。 https://docs.python.org/3/tutorial/datastructures.html - set() - >https://docs.python.org/ja/3/library/stdtypes.html#set-types-set-frozenset - 辺りがこういうもので浮かびました - `x in list`でもいいのかな?:+1: - 自前でコレクション処理を実装 (forやif) - filter, mapがある - これらよりも内包表記がオススメみたいでした(『Effective Python』) #### Column 車輪の再発明 - 学習のための車輪の再発明は大事かなって思ってます - 最近だと、Pythonに二分探索の標準ライブラリがあるのを知らなかったんですよね - bitsect - どう実装すれば良いんだろう、っていうときに中身を見ると参考にはなります(単純なアルゴリズムの話ではあるんですが) - - #### 7.2 ループ処理中の条件分岐ネスト - これは結構意識しているかな・・・ - でもちょっとこの例のようにできないケースを最近味わいました :+1: - 順序は入れ替えたものの、処理の中身によって出力するものが変わるので、結果的に3, 4重くらいネストせざるを得ない状況に。。。 - Policy Patternで出来た説 - Pythonだと(条件分岐ネストを解消した上で)ジェネレータにするのがいいかもしれません - #### 7.3 低凝集なコレクション処理 - Pythonでリストを変更できなくするには? タプルにする?:+1::+1: - タプルですかねぇ - うーん、まずはdataclass(frozen=True)でクラスを作っていけば良いのかな・・・? - あとは @classmethod で呼び出せるようにした方が良かったりする?別にいらない? - このクラスをずっと使い回す(変数名として長いスコープを持たせる)のか、そうで無いのか使い方がちょっとよくわかっておらず - 実装をちょっと考えてみたのですが、以下のリンクのような感じになりそうです - https://nsakki55.hatenablog.com/entry/2022/11/09/124541 - @dataclass(frozen=True) - as_listでtupleを返しているのはいただけない...