1. collections 

python.flowdas.com/library/collections.html

 

collections --- 컨테이너 데이터형 — 파이썬 설명서 주석판

collections --- 컨테이너 데이터형 소스 코드: Lib/collections/__init__.py 이 모듈은 파이썬의 범용 내장 컨테이너 dict, list, set 및 tuple에 대한 대안을 제공하는 특수 컨테이너 데이터형을 구현합니다. named

python.flowdas.com

collections 라이브러리에서 평소에 deque를 자주 쓴다. 가끔씩 Counter을 쓰는 경우도 있다.

1. collections.deque

 

import collections

list_array = [1,2,3]

stack = collections.deque(list_array)
# deque([1, 2, 3])
stack.appendleft(-1)
# deque([-1, 1, 2, 3])
# 좌측에 값을 추가한다.
stack.append(10)
# deque([-1, 1, 2, 3, 10])
# 우측에 값을 추가한다.
stack.pop()
# deque([-1, 1, 2, 3])
# 끝의 값을 반환하고, 삭제한다.
stack.popleft()
# deque([1,2,3])
# 제일 첫번째 값을 반환하고, 삭제한다.
extends_right = [10,20,30]
extends_left = [1,2,3]
stack.extend(extends_right)
# deque([1, 2, 3, 10, 20, 30])
# iterable한 객체를 우측에 추가한다.
stack.extendleft(extends_left)
# deque([3, 2, 1, 1, 2, 3, 10, 20, 30])
# iterable한 객체를 좌측에 추가한다. 요소가 뒤집어지니 조심
print(stack.index(1))
# 2
#  index(x) x의 처음위치를 반환한다.
print(stack.index(1,3,5))
# 3
#  index(x,start,end) x의 state와 end 사이의 위치에서 탐색한다.
try:
    print(stack.index(1,4,5))
except:
    print('ValueError 1 is not in deque')
# ValueError: 1 is not in deque
# Value Error가 뜬다.
stack.rotate(1)
# deque([30, 3, 2, 1, 1, 2, 3, 10, 20])
#  우측으로 x칸씩 이동한다.
#  음수도 가능 음수는 반대방향으로 돈다.
stack.insert(1,100)
# deque([30, 100, 3, 2, 1, 1, 2, 3, 10, 20])
#  stack.insert(ind,val)
# 해당 ind에 val을 삽입한다.
print(stack.count(1))
# 2
# x의 개수를 세준다.
stack.remove(2)
# deque([30, 100, 3, 1, 1, 2, 3, 10, 20])
# 해당 val의 첫번째 위치에 존재하는걸 삭제해준다.
stack.clear()
# deque([])
# stack을 전부 비운다.

2. collections.Counter

from collections import Counter

so = Counter('ababbbbcccc')
co = Counter({'red':4,'blue':5})
newco = Counter(cats=4,dogs=5)
print(newco)
# Counter({'dogs': 5, 'cats': 4})
print(so)
# Counter({'b': 5, 'c': 4, 'a': 2})
print(co)
# Counter({'blue': 5, 'red': 4})
for val in so.elements():
    print(val)
# 요소를 개수만큼 반환해줍니다.  뒤에서부터 반복됩니다.

print(so.most_common())
# [('b', 5), ('c', 4), ('a', 2)]
# 자주 쓰이는거 가장 많이 출연된 순서대로 출력해줍니다.
print(so.most_common(1))
# [('b', 5)]
# 만약 most_common(n) n을 입력시, 가장 흔한순서대로 n개만큼 출력합니다.

sum_so = Counter({'a':10,'b':20,'c':30,'d':5})
so.update(sum_so)
print(so)
# Counter({'c': 34, 'b': 25, 'a': 12, 'd': 5})
# 일반적인 dictionary에서 교환하는것과 달리 여기는 더해준다.

sub_so = Counter(a=10,b=20,c=30,e=30)
so.subtract(sub_so)
# Counter({'b': 5, 'd': 5, 'c': 4, 'a': 2, 'e': -30})
# substract는 update와 달리 빼주는 역할을 한다.
a = Counter(a=5,b=5)
b = Counter(a=5,b=6,c=5)
print(a+b)
# Counter({'b': 11, 'a': 10, 'c': 5})
# 두개를 더해줍니다.
print(a-b)
# Counter()
# 두개를 빼주는 대신 양의 정수만 유지해줍니다.
print(a|b)
# Counter({'b': 6, 'a': 5, 'c': 5})
# 두 딕셔너리의 합집합입니다.
# max(a[x],b[x])
print(a&b)
# Counter({'a': 5, 'b': 5})
# 두 딕셔너리의 교집합입니다.
# min(a[x],b[x])

이 Counter객체는 자주 쓰는 편은 아니지만 개수를 셀때는 압도적으로 편리하기 때문에 가끔씩 쓰는 객체이다.

 

 

 

2. heapq

 

3. bisect

 

 

4. itertools

 

 

5. functools

지금까지 자바스크립트를 수박 겉핥기 식으로 배우고 기본적인 Array, Object 메소드들만 외우고, 사용했었는데

 

Vue를 이용했을때에는, 컴포넌트, 메소드, 상태관리에 대한걸 vue, vuex 등이 전부 관리해주어서, 자바스크립트에 대한

 

심화적인 공부를 안했는데, 카카오커머스 2차 과제를 준비하면서 컴포넌트 및 상태관리를 구현하다보니

 

자바스크립트에 대한, 심화적인 공부가 필요하다는 걸 느꼈다.

 

그래서 Vanliia Javascript에 대해 처음부터 다시 공부해보는 시간을 가질려고 한다.

 

이렇게 글이라도 안쓰면, 언제까지고 안할것 같아서 일단 저지르고 본다.

 

일단 자바스크립트 공부는  developer.mozilla.org/ko/docs/Web/JavaScriptko.javascript.info/ 를 공부하면서 


그걸 나름대로 정리해서 올리겠다. 공부한걸 정리한 포스팅이 주를 이룰것 같고,

자세한 설명은 위 두사이트를 찾아가는걸 추천하겠다.

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 3일차  (0) 2021.02.26
자바스크립트 공부 2일차  (0) 2021.02.24
자바스크립트 공부 1일차  (0) 2021.02.19

+ Recent posts