defaultdictとは?
from collections import defaultdictで持って来れる
キーがない時に、自動で初期値を作ってくれる辞書。例えば、キーがまだない時に普通だとエラーになるけど、勝手にゼロを入れて作ってくれる。
Counterは?
defaultdictのintバージョン。数え上げ専用。dictクラスから継承されてる。
s =”abracadabra”
for char in s:
c2[char] += 1
Counter({‘a’: 5, ‘b’: 2, ‘r’: 2, ‘c’: 1, ‘d’: 1})
most_common(k)というメソッドを使うと、上位kの頻度の文字を返してくれる。
Counter(s).most_common(2)
[(‘a’, 5), (‘b’, 2)]
こんな感じ。
Composing programs 1.3まで読了
pure function: 同じインプットに対して、必ず同じアウトプットを返す
non-pure function: 返り値がNoneだったりする
print(print(1),print(2))
1
2
None None
list.sort()
- リスト専用のメソッド(
my_list.sort(...)) - 就地(in-place)で並べ替える → 元のリストが変わる
- 戻り値は
None(だからチェーンや[:K]直結はNG) - 追加メモリほぼゼロ(O(1) 追加)
sorted(iterable)
- どんなイテラブルでもOK(list, tuple, set, dict, generator…)
- 新しい “リスト” を返す → 元は壊さない
- 戻り値がリストなのでチェーン可(
sorted(...)[ :K ]など) - 返すぶんのメモリが要る(O(n) 追加)