파이썬 Collections
Function
In [18]:
from collections import deque
In [75]:
#deque 선언하여, 0~9까지의 수를 저장해줌
deque_list = deque()
for i in range(10):
deque_list.append(i)
print(deque_list)#일반적인 리스트 [] 와는 다른 deque([])로 생성됨
print(type(deque_list))#type은 collections.deque로 확인
In [76]:
deque_list.appendleft(777)#appendleft로 왼쪽에 원하는 요소 삽입가능
print(deque_list)
In [77]:
deque_list.append(999)#디폴트로 오른쪽에 들어감
print(deque_list)
In [78]:
deque_list.rotate(3)#값을 오른쪽으로 3칸 이동한다. 리스를 벗어나게 되는 오른쪽 3개의 값들은 왼쪽으로 온다.
print(deque_list)
In [79]:
print(deque(reversed(deque_list)))#요소의 순서를 역으로 한다.
In [80]:
deque_list.extend(['ㄱ',555,'A'])#요소에 값을 추가함 디폴트는 오른쪽
print(deque_list)
In [81]:
deque_list.extendleft(['','donut',888])#왼쪽으로 추가 가능
print(deque_list)
In [82]:
print(deque_list.pop())#제일 오른쪽 값을 삭제및 선택
print(deque_list)#맨 오른쪽 값이 삭제된 상태
deque 와 list속도비교¶
In [84]:
from collections import deque
import time
시작시간 = time.time()
deque_list = deque()
for i in range(10000):
for i in range(10000):
deque_list.append(i)
deque_list.pop()
print(time.time() - 시작시간, "초")
In [85]:
from collections import deque
import time
시작시간 = time.time()
일반리스트 = []
for i in range(10000):
for i in range(10000):
일반리스트.append(i)
일반리스트.pop()
print(time.time() - 시작시간, "초")
In [115]:
test1 = {}
test1['x'] = 1
test1['y'] = 2
test1['z'] = 3
test1['l'] = 9
for i,v in test1.items():
print(i,v)
print(test1)
In [116]:
from collections import OrderedDict
test2 = OrderedDict()
test2['x'] = 1
test2['y'] = 2
test2['z'] = 3
test2['a'] = 9
for i,v in test2.items():
print(i,v)
print(test2)
In [113]:
#key값을 기준으로 정렬
for i,v in OrderedDict(sorted(test2.items(),key =lambda x: x[0])).items():
print(i,v)
In [117]:
#value값을 기준으로 정렬
for i,v in OrderedDict(sorted(test2.items(),key =lambda x: x[1])).items():
print(i,v)
defaultdict¶
Dict에 기본값을 지정하고, 신규값 생성시 활용한다.
In [172]:
from collections import defaultdict
d= defaultdict()
d = defaultdict(lambda: 2) #디폴트값 2 설정
print(d["first"])
In [173]:
text = "아침 점심 저녁으로 라면을 밥으로 먹자 아침에 일찍 일어나서 밥을 먹자 점심엔 밥을 안먹고 치킨을 먹자".split()
print(text)
In [175]:
from collections import OrderedDict
word_count = defaultdict(object)
#디폴트 값을 10으로 지정했기 때문에 모든 요소가 10부터 카운트가 된다.
word_count = defaultdict(lambda : 10)
for word in text:
word_count[word] +=1
for i, v in OrderedDict(sorted(word_count.items(),key=lambda t: t[1],reverse =True)).items():
print(i,v)
Counter¶
숫자를 센다고 생각하면 이해하기 쉽다.
단어 단위로 수를샌다.
In [141]:
from collections import Counter
test1 = Counter()
test1 = Counter('배고프다')
print(test1)
test1 = Counter('Hellow')
print(test1)
In [176]:
#다음과 같이 dict선언을 통해 리스트를 생성하는것 또한 가능하다.
test2 = Counter({'aaa' : 5, 'bbb' : 2})
print(test2)
print(list(test2.elements()))
In [164]:
#연산기능도 제공한다.
#0과 음수는 표현하지 않는듯 하다.
test3 = Counter(a=4, b=20, c=3, d=101)
test4 = Counter(a=10, b=20, c=30, d=100)
print(test3 + test4)
print(test3 - test4)
print(test4 - test3)
print(test3 & test4)
print(test3 | test4)
namedtuple¶
사실 이부분은 어렵다.. 아직 이해가 덜 되는 부분임으로 조금더 공부를 하고 익혀야겠다.
In [168]:
from collections import namedtuple
test = namedtuple('test', ['x','y'])
t = test(11,y=22)
print(t[0] + t[1])
In [171]:
x,y = t
print(x,y)
print(t.x + t.y)
print(test(x=11,y=22))
부스트 코스 강의 내용을 참고하여 작성하였습니다.
나름 응용도 하였고, 각색 하여 여러 경우의 수를 생각해보았습니다.
사실 basic이라고 하기엔 다소 어려운 내용인데요,
어렵기 때문에 여러번 복습 해야겠습니다.
In [ ]:
'Function' 카테고리의 다른 글
파이썬 Enumerate & zip (0) | 2020.07.08 |
---|---|
파이썬 스플릿 & 조인 (0) | 2020.07.07 |
파이썬 함수 lambda(람다) (1) | 2020.07.06 |
리스트 컴프리헨션 (0) | 2020.07.05 |