본문 바로가기

Language/Python

[Python] 파이썬 자료형 : 튜플 자료형, 딕셔너리 자료형, 집합 자료형, 불 자료형

 

 

 

튜플 (tuple) 자료형

📌 리스트 vs 튜플

  • 리스트는 [], 튜플은 ()
  • 리스트는 mutable 자료형이지만 튜플은 immutable 자료형으로 요소값 변경 불가
  • 튜플은 요솟값을 변화시킬 수 없다는 점만 제외하면 리스트와 거의 동일
  • sort, insert, remove, pop 등 불가

📌 튜플 생성

t1 = ()
t2 = (1,)
t3 = (1, 2, 3)
t4 = 1, 2, 3	# () 없어도 튜플 !
t5 = ('a', 'b', ('ab', 'cd'))

 

 

 

딕셔너리 (dictionary) 자료형

📌 딕셔너리 : 대응 관계를 나타내는 자료형 (key : value)

key 중복 불가. 동일 key 있을 경우 덮어쓰게 됨

key 에는 변하지 않는 immutable 값만 넣을 수 있다. 변하는 값인 리스트를 넣으면 오류 발생함.

dic = {'name': 'abc', 'phone': '010-1234-5678', 'birth': '123456'}

📌 딕셔너리 사용법

# 딕셔너리 요소 추가 : 대괄호에 key, 우측에 value
a = {1 : 'a'}
a['num'] = 'ber'
print(a)    # {1: 'a', 'num': 'ber'}

# 딕셔너리 요소 삭제 : del 
b = {'num':'ber', 'hel':'lo', 'a':[1,2,3], 1:'x'}
del b['num'], b[1]
print(b)    # {'hel': 'lo', 'a': [1, 2, 3]}

# 딕셔너리 요소 값 조회 : 없으면 오류 발생
c = {1: 'apple', 'fruit': 'banana', 'x': ['melon', 'orange']}
print(c['x'])   # ['melon', 'orange']

# key 리스트 만들기 keys()
print(c.keys())     # dict_keys([1, 'fruit', 'x']) : dict_keys가 list 보다 메모리 낭비가 적다
print(list(c.keys()))   # [1, 'fruit', 'x']

# values 리스트 만들기 values()
print(c.values())     # dict_values(['apple', 'banana', ['melon', 'orange']])
print(list(c.values()))   # ['apple', 'banana', ['melon', 'orange']]

# key, value 쌍을 튜플로 묶은 값 얻기 items()
print(c.items())    # dict_items([(1, 'apple'), ('fruit', 'banana'), ('x', ['melon', 'orange'])])
print(list(c.items()))  # [(1, 'apple'), ('fruit', 'banana'), ('x', ['melon', 'orange'])]

# key, value 쌍 모두 지우기 clear()
d = {'num':'ber', 'hel':'lo', 'a':[1,2,3], 1:'x'}
d.clear()
print(d)    # {}

# 딕셔너리 요소 값 조회 get() : 없으면 None 이라는 값이 나옴, 없을 때 기본 출력 값 설정 가능
e = {'num':'ber', 'hel':'lo', 'a':[1,2,3], 1:'x'}
print(e.get('num'))     # ber
print(e.get('good', '없을 때 기본 출력 값'))     # 없을 때 기본 출력 값

# 딕셔너리 내에 해당 key 있는 지 확인하는 in
print('hel' in e)   # True
print('abab' in e)  # False

# key로 value 얻기 pop()
f = {'num':'ber', 'hel':'lo', 'a':[1,2,3], 1:'x'}
val = f.pop('a')
print(val)  # [1, 2, 3]
print(f)    # {'num': 'ber', 'hel': 'lo', 1: 'x'}

noval = f.pop('e', 'pop 할 게 없을 때 기본 출력 값')
print(noval)    # pop 할 게 없을 때 기본 출력 값
print(f)        # {'num': 'ber', 'hel': 'lo', 1: 'x'}

 

 

 

 

집합 (set) 자료형

📌 집합

중복을 허용하지 않고 순서가 없는 데이터들의 모임. 집합 연산을 쉽게 처리.

# 집합 자료형 : {} 내에 요소가 있는 자료형
a = set([1,2,3])    # {1, 2, 3}
b = set("banana")   # {'n', 'a', 'b'}
c = {1, 2, 3}       # {1, 2, 3}
d = set()           # 비어있는 집합 자료형은 set()으로 만듬. {}로 만들면 딕셔너리가 됨
print(type(d))      # <class 'set'>

# 집합 자료형은 순서가 없음 -> 인덱싱을 통해 요소값을 얻을 수 없다.
# 리스트나 튜플로 변환 후 인덱싱으로 접근 가능
e = set([1, 2, 3])
f = list(e)     # [1, 2, 3]
print(f[0])     # 1

# 리스트의 중복 제거 시 유용
list1 = [1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4]
setList = set(list1)
print(setList)              # {1, 2, 3, 4}

deldupList = list(set(list1))
print(deldupList)           # [1, 2, 3, 4]

# 교집합, 합집합, 차집합 구하기
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

# 교집합 &
print(s1 & s2)              # {4, 5, 6}
print(s1.intersection(s2))  # {4, 5, 6}

# 합집합 |
print(s1 | s2)              # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s1.union(s2))         # {1, 2, 3, 4, 5, 6, 7, 8, 9}

# 차집합 -
print(s1 - s2)              # {1, 2, 3}
print(s1.difference(s2))    # {1, 2, 3}
print(s2.difference(s1))    # {8, 9, 7}

# 집합 자료형 관련 함수
# 요소 추가 add
g = set([1, 2, 3])
g.add(4)
print(g)            # {1, 2, 3, 4}

# 요소 여러 개 추가 update
h = set([1, 2, 3])
h.update([4,5,6])
print(h)        # {1, 2, 3, 4, 5, 6}

# 특정 요소 제거 remove : 없는 값 제거 시 오류 발생
i = set([1, 2, 3])
i.remove(2)
print(i)        # {1, 3}

# 특정 요소 제거 discard : 없는 값 제거 시 오류 발생 안 함
j = set([1, 2, 3])
j.discard(1)
print(j)        # {2, 3}
j.discard(5)
print(j)        # {2, 3}

# 모든 요소 제거 clear
k = set([1, 2, 3])
k.clear()
print(k)        # set()

 

 

 

불 (bool) 자료형

 

True나 False는 파이썬의 예약어로,

true, false와 같이 작성하면 안 되고 첫 문자를 항상 대문자로 작성해야 한다.

📌 불 자료형

# 불 자료형
a = True
b = False
print(a)    # True
print(b)    # False
print(type(a))  # <class 'bool'>
print(type(b))  # <class 'bool'>

# 문자열, 리스트, 튜플, 딕셔너리 : 값이 있으면 참 없으면(비었으면) 거짓
# 숫자는 0 거짓 1 이상 참
# None 은 거짓