저번 게시물의 연장선으로 튜플, 딕셔너리, 집합을 알아보자.
-> 튜플은 리스트와 같이 연속된 공간에 값을 할당하는 것이란 점에서 같지만, 삽입, 삭제가 불가능하다.
- 표현은 a = (1, 2, 3, 4) 와 같이 표현한다. []로 표현하는 리스트와는 다르다.
- 값을 append 혹은 del하지는 못하지만 존재하는 값들을 인덱싱, 슬라이싱해서 출력하는 것은 가능하다.
- 튜플끼리 더할 수도 있다. 하지만, 새로 생긴 튜플은 기존의 튜플이 아닌 새로운 튜플을 생성하는 것이므로 여전히 불변이다.
ex) a = (1, 2), b= (3, 4), a+b = (1, 2, 3, 4)- 곱하는 것도 가능하다.
ex) a = (1, 2), a*3 = (1, 2, 1, 2, 1, 2)
여기서 불변인 (1, 2)를 a에서 바꾼다는 개념보다는 곱한 a x 3을 a에 새로 할당하는 개념에 가깝다.
-> 어떠한 단어를 키 값에 또 다른 값이 할당되는 개념이다. 자바에서는 Hashmap, map이 있고, 자바스크립트에서는 Object에 해당한다.
diction = {'name' : 'ssafy', 'gender' : male}
print(diction['name'])
a = {1 : a}
a['key'] = "value"
print(a)
결과 : 1: 'a', 'key': 'value'
위에서 추가한 'value'를 지우려면
del a['key']로 키를 지워주면 지울 수 있다.
a = {1 : a, 2: b, 3: c}
print(a.keys())
print(a.values())
print(a.items())
추가로,
- 딕셔너리의 키 값들을 지우는 a.clear()
- a[3]과 같이 a.get(3)을 통해 값을 반환할 수 있다.
둘의 차이점은 a[3]은 3이라는 키 값이 없으면 에러가 뜨지만, a.get(3)은 none을 반환한다.- 만약, none이 아닌 다른 문자열이나 결과를 반환하고 싶으면, a.get(3, 'nothing')의 형태로도 가능하다.
- boolean으로 true와 false형으로 in함수를 이용할 수도 있다.
4 in a 라는 함수에서 a안에 4라는 키 값이 없으면 false를 반환한다.
- 딕셔너리와 같이 순서가 존재하지 않는다
- 중복을 허용하지 않는다.
- 집합에 대한 연산들을 해결한다.
참고로, Set, HashSet이 이러한 특징을 가진다.
set1 = set([1, 2, 3])
set2 = {1, 2, 3}
print(set1)
위와 같이 set1을 선언하면, 1, 2, 3을 포함한 집합인 set이 생성된다. set2도 중괄호로 감싼 같은 set이다.
1. set1 & set2
2. set1.intersection(set2)
어느 방법을 사용하던 상관없다. 자바에서는 2중 for문을 사용해 각 요소가 겹치면 리스트에 추가하는 방식으로 사용이 가능하지만 복잡한 편이다.
1. set1 | set2
2. set1.union(set2)
두 방법 모두 합집합을 표현하는 함수이다.
1. set1 - set2
2. set1.difference(set2)
1.set1.add(5)
add함수는 한 값만 추가할 수 있다.
1. set1.update([7, 8, 9])
update함수는 여러 값을 입력할 수 있다.
이번 게시물에 정리한 것들은 모두 자료구조에 대한 파이썬의 함수 및 개념들이었다. 자주 활용되는 요소들이니 숙지해둬야겠다.