파이썬 | product, defaultdict 사용법
python :: product, defaultdict
파이썬을 사용해서 알고리즘을 풀다보면 2차 배열을 다룰 때 for 문을 두 번 쓰는 것이 매우 흔하다. for문이 중첩되면 인덴트가 중첩되서 발생하고 이는 코드 가독성과 내 생산성을 떨어뜨리는데, 이 때 itertools의 product를 사용하면 더 간결하게 코딩할 수 있다.
from itertools import product
for i in range(N):
for j in range(N):
=>
for i in product(range(N), range(N)):
defaultdict
마찬가지로 딕셔너리를 사용할 때 해당 키의 값에 1씩 더해주는 연산도 자주 사용하는데, 이 때마다 키가 있는지 없는지 확인해주는것이 꽤나 귀찮다고 생각해왔다. 이 때 어떠한 키가 들어오든지 초기값이 0으로 시작되는 자료구조가 있는데 바로 defaultdict이다. lambda : 0을 사용해서 초기값을 0으로 지정해줄 수 있다.
from collections import defaultdict
counter_dict = defaultdict(lambda: 0)
주의할 것
from collections import defaultdict
counter_dict = defaultdict(lambda: 0)
counter_dict[1] = 10
counter_dict[0]
counter_dict.items()
// dict_items([(1, 10), (0, 0)])
defaultdict에 할당하지 않더라도 새로운 키로 접근만 해도 해당 키에는 디폴트값이 생성된다는 걸 모른다면 나중에 버그를 잡는데 시간을 많이 허비할 수 있다는 것을 주의하자.
댓글
댓글 쓰기