Python 기초 - 4.셋, 튜플, 딕셔너리
여러 데이터들의 모음을 프로그램에서 효율적으로 다루기 위해 사용하는 것들:
- 리스트(list) [1,2,3]: 요소 변경 가능 → 가장 기본적이고 많이 사용됨
- 셋(set) {1,2,3}: 집합. 요소 고정, 변경 불가.
- 튜플(tuple) (1,2): 변경 불가. 함수반환값 (다른 언어들은 함수반환값을 하나밖에 못 가져오는 경우가 많은데, 파이썬은 튜플을 활용해서 여러 값들을 가져옴)
- 딕셔너리(dictionary) {키:값, 키:값}
중요 포인트: 리스트의 메모리 부여, 참조값에 대한 컨셉 이해가 필요.
- 리스트복사와 메모리
- “딥카피” 개념
셋(set)
수학의 집합과 같은 개념
-
요소의 중복이 허용되지 않는다
-
요소의 순서가 없음 → 순서가 없기 때문에 인덱스도 없음 (s[0] 사용불가)
-
요소 변경이 불가 (수정 불가, immutable)
-
셋 자체는 변경 가능 (요소의 추가/삭제는 가능)
⇒ 셋 안에는 다른 타입의 요소들을 섞어서 넣을 수 있음. 그러나 요소변경이 가능한(mutable) 리스트는 요소로 가질 수 없음.
-
중괄호를 사용하여 표현
s = {1, 2, 3, 4}
- 셋 생성 & 요소 추가/삭제
#셋 생성
s = {1, 2, 3}
s = set()
- 딕셔너리도 중괄호를 사용하기 때문에 s = {} 를 사용하면 셋이 아니라 딕셔너리가 생성된다!
#요소 추가
s.add('bbb') #add함수로는 한꺼번에 여러개 추가 불가
a = [5,6,7]
s.update(a) #요소 여러개 추가 시에는 update 사용.
- 위 방식으로 하면 셋에 리스트가 들어가는게 아니라 리스트의 요소를 사용해서 셋을 구성함.
#요소 삭제
s.remove('aaa') #없는 요소 삭제시 에러
s.discard(1) #없는 요소 삭제시 무시
x = s.pop() #값을 맨 앞부터 추출하여 셋으로부터 삭제
s.clear() #모든 요소 삭제
- 집합연산
s1 = {1,2,3}
s2 = {3,4,5}
#합집합(union), 결과:{1,2,3,4,5}
s3 = s1|s2
s4 = s1.union(s2)
#교집합(intersection), 결과:{3}
s3 = s1 & s2
s4 = s1.intersection(s2)
#차집합(difference), 결과: s3와 s5 = {1,2}, s4와 s6 = {4,5}
s3 = s1 - s2
s4 = s2 - s1
s5 = s1.difference(s2)
s6 = s2.difference(s1)
튜플(tuple)
- 소괄호를 사용하거나 괄호를 사용하지 않고 데이터를 입력
- 요소 변경안됨
- 처음 생성할 때를 제외하고 튜플에 대해 대입연산자 사용 불가
- 리스트와 같은 mutable 요소를 쓸 수 있기 때문에 우회적으로 변경가능)
- 고정된 집합 데이터 저장
- 여러개의 값을 한번에 초기화하는 작업에 많이 사용
- 튜플은 인덱스 사용 가능 = 순서가 존재
- 요소 수정 관련 사항 외에 사용방법은 리스트와 거의 동일
tuple1 = (1, 2, 3, 4)
tuple2 = 4, 5, 6, 7
#인자가 하나만 있는 튜플. 반드시 콤마를 뒤에 붙여줘야함
tuple3 = (a,)
tuple4 = b,
리스트, 튜플, 셋 타입 변환
세 자료형은 서로 형태의 유사성을 가지고 있어서 필요에 따라 list(), tuple(), set() 함수를 이용하여 타입을 변환하여 사용할 수 있다.
tuple1 = (1, 2, 3, 4)
a = list(tuple1)
print(a) # 결과값: [1, 2, 3, 4]
딕셔너리
-
키(key)와 값(value)을 묶어서 저장이 이루어짐
⇒ 빠른 검색에 용이
-
키는 중복허용안함, 값은 중복되어도 됨
-
키의 타입은 변경불가한 값, 값의 타입은 제약 없음
-
키를 사용하기 때문에 정해진 순서가 없으므로 인덱스 사용 불가
- 대신 딕셔너리명[키이름] 형태로 값 호출가능
-
요소 추가, 변경, 삭제 가능
dict1 = {'key1':'value1', 'key2':'value2', 'key3':'value3', ...
print(dict1[key1]) # 결과값: 'value1'
- 딕셔너리 메서드
- keys() : 키 전체를 리스트로 반환
- values() : 값 전체를 리스트로 반환
- items() : 키:값 전체를 튜플형태(키, 값)로 담아 리스트로 반환
댓글남기기