[Python] 리스트(list)와 튜플(tuple) 그리고 딕셔너리(dictionary), 셋(set)


Study/Python  2019. 12. 4. 09:00

안녕하세요. 명월입니다.


이 글은 Python에서 사용되는 리스트(list)와 튜플(tuple) 그리고 딕셔너리(dictionary), 셋(set)에 대한 글입니다.


Python은 다른 프로그래밍 언어와 다르게 이 리스트와 튜플, 딕셔너리 range의 사용법이 조금 중요합니다. 다른 언어라고 중요하지 않는 건 아니닙니다만 Python은 이 리스트가 조금 더 세밀하게 나누어져 있습니다.

리스트(list)

리스트는 다른 언어와 같은 push와 put이 존재하는 리스트 구조입니다. 리스트는 Python에서 대괄호([])로 나타냅니다.

# 리스트 선언
list = []

# 리스트에 값넣기
list.append(1)
list.append(2)
list.append(3)

# 리스트 출력 [1,2,3]
print(list)

# 리스트 중간에 값 넣기
list.insert(1, 3)
# 리스트 출력 [1,3,2,3]
print(list)

# 리스트 중간 삭제
del list[2]
# 리스트 출력 [1,3,3]
print(list)

# 리스트 맨 처음 값을 return하고 리스트에서 삭제하기
ret = list.pop(0)
# 결과 1
print(ret)
# 리스트 출력 [3,3]
print(list)

#리스트에 5를 push하기
list.append(5)
# 리스트의 3의 개수, 결과 2
print(list.count(3))
# 리스트의 5의 개수, 결과 1
print(list.count(5))

# 리스트 배열 뒤집기
list.reverse()
# 리스트 출력 [5,3,3]
print(list)

# 리스트 복제
clone_list = list.copy()
# 리스트 전부 삭제
list.clear()
# 리스트 출력 []
print(list)
# 리스트 출력 [5,3,3]
print(clone_list)

# 리스트 복제
list = clone_list.copy()
# 오름 차순 정렬
list.sort()
# 리스트 출력 [3,3,5]
print(list)

튜플(tuple)

파이썬에는 tuple이라는 형태가 있는데 간단하게 설명하면 tuple은 변하지 않는 리스트와 같습니다. 튜플은 파이썬에서 소괄호(())로 나타냅니다.

tuple = (1,2,3)
#결과 1
print(tuple[0])

tuple[0] = 2

tuple[0]의 값을 2로 변경하려고 하면 에러가 발생합니다.

tuple = (1,2,3)
# 튜플 언팩킹
a, b, c = tuple

print(a)
print(b)
print(c)

튜플은 변하지 않는 값이기 때문에 튜플의 갯수와 맞추어서 콤마(,)구분으로 값을 할당할 수 있습니다. 이는 튜플 언팩킹이라고 합니다.


딕셔너리(Dictionary)

파이썬에서 딕셔너리는 웹에서 json의 형태와 비슷합니다. 딕셔너리는 파이썬에서 중괄호({})로 나타냅니다.

# 딕셔너리 생성
dic = {'a':1,'b':2,'c':3}
# 딕셔너리 출력 {'a':1,'b':2,'c':3}
print(dic)
# 딕셔너리의 키를 b로 하는 값을 출력 2
print(dic['b'])

# 딕셔너리 키와 값을 추가(키가 존재한다면 값을 수정)
dic['d'] = 4
# 딕셔너리 출력 {'a':1,'b':2,'c':3,'d':4}
print(dic)

# 딕셔너리 키를 삭제
del dic['a']
# 딕셔너리 출력 {'b':2,'c':3,'d':4}
print(dic)

# 딕셔너리 키를 튜플로 변환
keys = tuple(dic.keys())
# 키를 출력 ('b', 'c', 'd')
print(keys)
# 튜플 키를 루프로 dic값을 출력
for key in keys:
  print(dic[key])

# 딕셔너리 초기화 
dic.clear()
# 딕셔너리 출력 {}
print(dic)

# 딕셔너리는 튜플을 키로 사용할 수 있다.
dic = {(1,2,3):"test",(1,2,4):"good"}
# 딕셔너리 출력 {(1, 2, 3): 'test', (1, 2, 4): 'good'}
print(dic)

셋(set)

set은 집합 자료형입니다. 집합 자료형의 정의는 수학에서 집합의 성질을 가지고 있는 자료형입니다. 셋는 파이썬에서 중괄호({})로 나타냅니다.

여기서 구분해야 할 것은 딕셔너리와 같은 중괄호를 사용하는데, 차이접은 딕셔너리는 키가 존재하지만, 셋은 마치 리스트를 선언하는 것처럼 키가 존재하지 않습니다.

# set을 두개 선언합니다. 저는 셋의 값으로 튜플을 넣었습니다.
set1 = {(1,1),(1,2)}
set2 = {(1,2),(1,3)}
# 셋 출력 {(1, 2), (1, 1)}
print(set1)
# 셋 출력 {(1, 2), (1, 3)}
print(set2)

# set에 값 추가
set1.add((1,8))
# 셋 출력 {(1, 2), (1, 8), (1, 1)}
print(set1)

# set에 값 제거 set1.delete((1,8)) 와 같으니 delete는 값이 없으면 에러를 발생, discard는 에러를 발생하지 않는다.
set1.discard((1,8))
# 셋 출력 {(1, 2), (1, 1)}
print(set1)

# 교집합
ret = set1 & set2
# 셋 출력 {(1, 1)}
print(ret)

# 합집합
ret = set1 | set2
# 셋 출력 {(1, 2), (1, 3), (1, 1)}
print(ret)

# 차집합
ret = set1 - set2
# 셋 출력 {(1, 1)}
print(ret)

# 셋을 리스트로 변환한다.
list = list(set1)
# 리스트 출력 [(1, 2), (1, 1)]
print(list)

# 리스트를 셋으로 변환한다.
set3 = set(list)
# 셋 출력 {(1, 2), (1, 1)}
print(set3)

# 셋의 첫번째 값을 제거하고 출력한다.
print(set1.pop())
# 값 출력 (1, 2)
print(set1)

# 셋을 초기화 한다.
set1.clear()
print(set1)

자료형 타입의 공통 함수

자료형 타입을 공통적으로 사용하는 함수가 있는데 데이터 길이와 포함 확인 함수입니다.

list = [1,2,3]
tuple = ('a','b','c')
dic = {'a':1,'b':2,'c':3}
set = {'A','B','C'}

# 길이 구하는 함수 값은 전부 3
print(len(list))
print(len(tuple))
print(len(dic))
print(len(set))

# 포함 확인 함수 전부 False
print(5 in list)
print('e' in tuple)
print('e' in dic)
print('E' in set)

# 포함 안하는지 확인 함수 전부 True
print(5 not in list)
print('e' not in tuple)
print('e' not in dic)
print('E' not in set)

여기까지 Python에서 사용되는 리스트(list)와 튜플(tuple) 그리고 딕셔너리(dictionary), 셋(set)에 대한 설명이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.