Data structure는 데이터를 효율적으로 저장하기 위한 구조이다.
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a.append(5)
>>> a.pop()
5
>>> a
[1, 2, 3, 4]
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a.append(5)
>>> a.pop(0)
1
>>> a.pop(0)
2
stack은 pop()을 이용해 데이터를 반환하지만
queue는 pop(0)를 이용해 데이터를 반환받아야함.
t = (1) #정수로 인식
tu = (1, ) # 이렇게 작성해야한다.
s1 = set([1, 2, 3, 4)
s2 = {1, 2, 3, 4} # 두가지 방법 모두 가능
s1.add(1) # 1추가
s1.remove(2) # 2 삭제
s2.updata([5, 2, 1]) # 여러개 추가
s2.discard(5) #5 삭제
s2.clear() #모든 원소 삭제
이외에도 set은 다양한 집합 연산을 지원한다.
s1.union(s2)
s1 | s2
s1.intersection(s2)
s1 & s2
s1.difference(s2)
s1 - s2
dict = {"go": "가다", "home": "집"}
dict["hello"] = "안녕"
dict["bye"] = "잘가"
"hello" in dict.keys()
"집" in dict.values()
from collections import deque
deque_list = deque()
deque_list.appendleft(10)
deque_list.rotate(1)
deque_list.extend([6, 3])
deque_list.extendleft([11, 33])
jupyter notebook에서 %timeit 함수명()을 이용하면 쉽게 시간을 측정할 수 있다.
from collections import defaultdict
d = defaultdict(lambda : 0)
print(d["hello"]) # 0
text = "fdas gfjo jfods jflds fjowe fjowe fjeow feowu sfds."
word = text.split()
for word in text:
d[[word] += 1
이런 식으로 단어의 출현 빈도를 세는데 사용할 수도 있다.
from collections import Counter
C = Counter(["B", "S", "S", "B", "S"])
# {"B":2, "S":3}
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(x=11, y=22)
print(p[0] + p[1])