Python - 자료형(2)

Code_Alpacat·2021년 12월 27일

저번 게시물의 연장선으로 튜플, 딕셔너리, 집합을 알아보자.

1. 튜플

-> 튜플은 리스트와 같이 연속된 공간에 값을 할당하는 것이란 점에서 같지만, 삽입, 삭제가 불가능하다.

  • 표현은 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에 새로 할당하는 개념에 가깝다.

2. 딕셔너리

-> 어떠한 단어를 키 값에 또 다른 값이 할당되는 개념이다. 자바에서는 Hashmap, map이 있고, 자바스크립트에서는 Object에 해당한다.

  • 리스트와의 차이점으로 비교하자면, 리스트는 원하는 값을 찾으려면 index를 순차적으로 탐색하며, 찾으려는 값이 할당된 index를 탐색해야한다.
    그에 반해, 딕셔너리는 키 값인 이름, 주소, 전화번호 등 해당 키를 검색하면 할당된 값을 바로 찾아낼 수 있다.
  • 형태는 다음과 같다.
diction = {'name' : 'ssafy', 'gender' : male}
print(diction['name'])
  • 위에서 보이듯 diction[0]으로 'ssafy'를 반환한게 아니라, 'name'이라는 키 값으로 반환했다.

2-1.딕셔너리 쌍 추가 & 삭제

  • 추가
a = {1 : a}
a['key'] = "value"

print(a)

결과 : 1: 'a', 'key': 'value'

  • 삭제

위에서 추가한 'value'를 지우려면
del a['key']로 키를 지워주면 지울 수 있다.

2-2. 딕셔너리 주의사항

  • 키 값을 탐색할 때, 오류를 피하려면, key값은 유일해야한다. key값이 달라도 같은 값이 들어가는게 가능하지만 그 반대는 불가능하다. 만약, 중복된다면 마지막에 있는 키만 남는다.

2-3. Key 리스트와 Value 리스트

a = {1 : a, 2: b, 3: c}
print(a.keys())
print(a.values())
print(a.items())
  • 결과 값은 각각 [1, 2, 3], [a, b, c]를 갖는다. 각자의 key와 value만을 뽑아내 리스트를 만들 수 있다.
  • items 함수는 key와 value를 함께 묶은 쌍으로, 새로운 튜플의 형태로 배열을 생성한다.
  • 딕셔너리를 이용하면 반복문에서도 원하는 값들을 활용할 수 있다.

추가로,

  • 딕셔너리의 키 값들을 지우는 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를 반환한다.

3. 집합

집합 자료형의 특징

  • 딕셔너리와 같이 순서가 존재하지 않는다
  • 중복을 허용하지 않는다.
  • 집합에 대한 연산들을 해결한다.
    참고로, Set, HashSet이 이러한 특징을 가진다.
set1 = set([1, 2, 3])
set2 = {1, 2, 3}
print(set1)

위와 같이 set1을 선언하면, 1, 2, 3을 포함한 집합인 set이 생성된다. set2도 중괄호로 감싼 같은 set이다.

  • 데이터베이스에서 중복을 제거하는 등 유용하게 쓰일 수 있다.

3-1. 교집합

  • 교집합은 set에서 매우 쉽게 구현이 가능한 기능이다.
    표현 방법에는 두 가지가 있다.

1. set1 & set2
2. set1.intersection(set2)

어느 방법을 사용하던 상관없다. 자바에서는 2중 for문을 사용해 각 요소가 겹치면 리스트에 추가하는 방식으로 사용이 가능하지만 복잡한 편이다.

3-2. 합집합

  • 합집합은 각 집합에서 중복이 되지 않게 합쳐야한다.

1. set1 | set2
2. set1.union(set2)

두 방법 모두 합집합을 표현하는 함수이다.

3-3. 차집합

  • 차집합은 한 집합에서 교집합을 제외한 집합이다.

1. set1 - set2
2. set1.difference(set2)

3-4 집합에 값 추가하기

  • 집합에 속한 값들을 추가할 수 있다.

1.set1.add(5)
add함수는 한 값만 추가할 수 있다.

1. set1.update([7, 8, 9])
update함수는 여러 값을 입력할 수 있다.

  • 만약 추가하려는 값이 이미 중복된 값이면 자동으로 중복이 제거된다.

이번 게시물에 정리한 것들은 모두 자료구조에 대한 파이썬의 함수 및 개념들이었다. 자주 활용되는 요소들이니 숙지해둬야겠다.

profile
In the future, I'm never gonna regret, cuz I've been trying my best for every single moment.

0개의 댓글