파이썬 기본 데이터 구조
Collections
tmp = [1,2,3,4,5]
tmp.append(1) #push
tmp.pop() #pop, 1 출력
tmp.pop() #pop, 5 출력
tmp = (1,2,3) / tmp = (1,)
tmp.add(2) # 원소 2 추가, 중복 불허
tmp.update([2,3,4]), #다수의 원소 추가, 중복 불허
tmp.remove(2) #원소 2 제거
tmp.remove(2) => KeyError 발생 #원소 2가 없는 상태에서 진행했기 떄문
tmp.discard(3) #원소 3 제거
tmp.discard(3) #정상 동작, 원소 존재 여부 고려X
tmp.clear() #원소 모두 삭제
s1 = set([1,2,3,4])
s2 = set([3,4,5,6])
#s1과 s2의 합집합, set([1,2,3,4,5,6])
s1 + s2
s1.union(s2)
#s1과 s2의 교집합, set([3,4])
s1 & s2
s1.intersection(s2)
#s1과 s2의 차집합, set([1,2])
s1 - s2
s1.difference(s2)
# key가 152441223이고, value가 "hong"일 때
tmp = {152441223 : "hong"}
print(tmp[152441223]) # "hong" 출력
tmp = {1111 : "Hong", 1112 : "Ko"}
tmp.items() #dict의 데이터를 tuple 형태로 데이터 출력
>> dict_items([(1111,"Hong"), (1112,"Ko)])
tmp.keys() #dict 키 값만 출력
>> dict_keys([1111,1112])
tmp.values() #dict value만 출력
>> dict_values(["Hong","Ko"])
tmp[1113] = "Kim" #Dict 추가
tmp
>> {1111 : "Hong", 1112 : "Ko", 1113 : "Kim"}
from collections import deque
from collections import Counter
from collections import OrderedDict
from collections import defaultdict
from collections import nametuple
from collections import deque
deque_list = deque([1,2,3,4]) #deque 자료 구조형으로 변수 선언
deque_list.append(1) # 데이터를 마지막에 추가, deque([1,2,3,4,1])
deque_list.appendleft(1) # 데이터를 처음에 추가,deque([1,1,2,3,4,1])
deque_list.pop() # 마지막 데이터 출력, deque([1,1,2,3,4])
deque_list.popleft() # 첫번째 값 제거 == pop(1), deque([1,2,3,4])
deque_list.rotate(n) #원소들을 n칸씩 우측으로 회전
deque_list.extend([5,6,7]) #원소 다수 추가, deque([1,2,3,4,5,6,7])
deque_list.extendleft([5,6,7]) #deque([7,6,5,1,2,3,4,5,6,7])
from collections import defaultdict
tmp = defaultdict() #defaultdict 생성
tmp = defaultdict(lambda : 0) #default 값으로 0 설정
for s in ["aa","bb","cc","aa"]:
tmp[s] += 1
# Key가 없으면 default 값에 1을 추가하여 저장
tmp
>> {"aa" : 2, "bb" : 1, "cc" : 1}
from collections import Counter
c= Counter('aabbccd')
d = Counter('de')
print(c)
>> Counter({'a':2,'b':2,'c':2,'d':1})
print(d)
>> Counter({'d':1,'e':1})
c - d
>> Counter({'a': 2, 'b': 2, 'c': 2})
c.subtract(d)
c
>> Counter({'a': 2, 'b': 2, 'c': 2, 'd': 0, 'e': -1})
from collections import namedtuple
Point = namedtuple("Point", ['x','y'])
p = Point(11,22)
x,y = p #언패킹
print(x,y)
>> 11 22
print(p.x, p.y) #.을 활용하여 출력도 가능
>>11 22