競プロ使うPythonのモジュールの使い方をメモしていきます.
Counter(頻度分布)
リストや文字列を与えると要素ごとの出現頻度がわかる(辞書型みたいな感じ{要素:頻度}).from collections import Counter a = [3,1,4,1,5,9,2,6,5,3,5,8,9,7,9] c = Counter(a) print(c.most_common()) # [(5, 3), (9, 3), (3, 2), (1, 2), (4, 1), (2, 1), (6, 1), (8, 1), (7, 1)] print(c[3]) # 2
練習問題
permutations(順列列挙)
リストや文字列(ソートされている必要はない)を与えるとそのリストの順列をすべて列挙する. ただし, 同じ要素が複数ある場合は同じ順列が複数出現する.from itertools import permutations a = [1,2,3,4] for x in permutations(a): print(x) # (1,2,3,4)や(2,4,1,3)など
練習問題
combinations(組合せ列挙)
リストや文字列(ソートされている必要はない)を与えるとそのリストの組合せをすべて列挙する. ただし, 同じ要素が複数ある場合は同じ組合せが複数出現することがある.from itertools import combinations a = [1,2,3,4] for x in combinations(a,2): print(x) # (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)
練習問題
deque
前後への挿入や削除がでできるリストみたいなもの.from collections import deque deq = deque([1,4]) # 引数なくてもいい print(deq) # [1, 4] deq.append(1) print(deq) # [1, 4, 1] deq.appendleft(3) print(deq) # [3, 1, 4, 1] print(deq.pop()) # 1 print(deq) # [3, 1, 4] print(deq.popleft()) # 3 print(deq) # [1, 4]
defaultdict(デフォルト辞書)
keyエラーにならない辞書from collections import defaultdict d = defaultdict(int) for i in range(10): d[i] += 1
練習問題