# Chapter04_04

#   시퀀스 형 : 순서가 있고 번호가 나열됨
#   컨테이너(Container : 서로 다른 자료형[List, Tuple, collections.deque])
#   플랫(Flat : 한 개의 자료형[str, bytes, bytearray, array.array, memoryview])
#   가변(mutable) : List, bytearray, array.array, memoryview, collections.deque
#   불변(immutable) : Tuple, str, bytes
#   해쉬테이블(HashTable) -> 적은 리소스로 많은 데이터를 효율적으로 관리
#   Dict -> Key 중복허용 X, Set -> 중복 허용 X
#   Dict 및 Set 심화

#   immutable Dict
from types import MappingProxyType

d = {'key1': 'value1'}

# Read Only
d_frozen = MappingProxyType(d)

print(d, id(d))
print(d_frozen, id(d_frozen))

# 수정 가능
d['key2'] = 'value2'
print(d)

# 수정 불가 -> immutable이기 때문
#d_frozen['key2'] = 'value2'

# Set
s1 = {'Apple', 'Orange', 'Orange', 'kiwi', 'apple'}
s2 = set(['Apple', 'Orange', 'Orange', 'kiwi', 'apple'])
s3 = {3}
s4 = set() # Not {} <- <class 'dict'>
s5 = frozenset({'Apple', 'Orange', 'Orange', 'kiwi', 'apple'})

s1.add('melon')

print(s1)

# 추가 불가
# s5.add('melon') # Fronze으로 Read Only기 때문

print(s1, type(s1))
print(s2, type(s2))
print(s3, type(s3))
print(s4, type(s4))
print(s5, type(s5))

# 선언 최적화
# 바이트 코드 -> 파이썬 인터프리터 실행
from dis import dis

print('----------------------')
print(dis('{10}'))
print('----------------------')
print(dis('{set(10)}'))

# Set Comprehension

print('---------------------')
from unicodedata import name
print({name(chr(i), ) for i in range(0,256)})

'42일기' 카테고리의 다른 글

MINIRT(1)  (0) 2022.01.12
Minishell(3)  (0) 2021.12.20
Philosophers  (2) 2021.07.09
Push_swap  (0) 2021.06.24
Minitalk(2)  (0) 2021.06.17

+ Recent posts