CHAPTER 11 · 8 lessons · 104問
もっと便利な道具
セット・collections・正規表現・再帰。知っていると急に楽になる道具を、必要な理由とセットで。
この章は、これまでの章と少し性格が違う。1本の筋を通すのではなく、知っていると急に楽になる道具を集めてある。どれも「無くても書けるが、あると段違い」というものだよ。
最初は セット。リストと似ているけれど、同じ値を2つ持てない入れ物だ。「重複を消したい」というだけなら set(kazus) の一言で済む。さらに、2つのセットの共通部分・片方にしかない部分を求める演算がついていて、「両方のクラスに在籍している生徒」のような処理が1行で書ける。自分で二重ループを書く必要はもう無いよ。
次が collections。標準ライブラリの中でも特によく使われるモジュールだ。Counter は「それぞれ何個あるか」を数えるための道具で、単語の出現回数を数えるような処理が本当に1行になる。defaultdict は「まだ無いキーを触ったとき、勝手に初期値を用意してくれる辞書」で、if kagi not in jisho: という定型文を書かなくてよくなる。
そして 正規表現。文字列の中から「こういう形をしたもの」を探す仕組みだよ。電話番号、郵便番号、日付。「数字が3つ、ハイフン、数字が4つ」といったパターンで探せる。記号の羅列に見えて最初はぎょっとするけれど、この章で扱うのは基本の数個だけにする。全部覚える必要はなく、「こういうものがある」と知っていて、必要なときに調べられれば十分だよ。
最後が 再帰。関数が自分自身を呼ぶ書き方だ。実用というより考え方の道具で、「大きな問題を、同じ形の小さな問題に分けて解く」という発想を身につけるためのものだよ。フォルダの中のフォルダを辿るような、階層構造を扱うときに本領を発揮する。
この章の道具は、どれも「知らなくても書ける」。だからこそ、知らないままだと一生使わない。名前と、どういうときに出番が来るかだけでも覚えて帰ってほしい。
この章のレッスン
重なりを扱う
数える・まとめる
文字のパターン