본문 바로가기

컴퓨터공학/파이썬 입문

[노베이스, 취준생을 위한 파이썬] - 9강 튜플, 딕셔너리, 세트

반응형

본 강의 시리즈는 파이썬 입문 및 복습을 위한 강좌입니다. 모든 포스팅은 아래의 링크에서 확인가능합니다!


1강 - 변수와 자료형

2강 - 제어구조 ( if else 문)

3강 - 제어구조 ( for 문)

4강 - 제어구조 ( while 문)

5강 - 함수

6강 - 재귀함수

7강 - 람다 (lambda)

8강 - 문자열, 리스트

9강 - 튜플, 딕셔너리, 세트

10강 - 유용한 라이브러리

11강 - 클래스

12강 - 예외처리


오늘은 튜플, 딕셔너리, 세트 자료형을 배울 예정이다! 다 비슷하나 각각의 쓰임새가 약간씩 다르니 잘 익혀서 적재적소에 사용하도록 하자! 시~작!

 

Tuple

일단 튜플은 리스트와 굉장히 유사하다. 리스트가 [] <- 이걸 이용했다면, 튜플은 () <- 이거다. 살짝 차이가 있다면 튜플의 요소가 1개라면 (1) 이 아니라 (1, ) 요렇게 갑니다. 규칙이예요. 리스트랑 제일 다른점은 튜플은 값을 변경할 수가 없습니다. 요소 접근법은 다 같아요! 요소 변경 빼고 앞서 말씀드렸던 덧셈, 슬라이싱 등등 다 가능하구요. 여기서도 유용한 함수 몇개 보고가도록 하겠습니다. 

튜플은 사실 괄호 없이도 선언이 가능한데요, 이를 이용해서 이런것도 가능합니다. 

원래 이런 스왑도 변수를 하나 더 줘서 해야 하는데 파이썬에서는 간단하게 가능합니다. 

 

Dict

딕셔너리 자료형의 경우 말그대로 사전의 형태를 띄게 됩니다. 딕셔너리는 key와 value로 이루어진다. 수학점수를 딕셔너리로 표현해보면, 각 학생의 이름을 key로, 그에 대응하는 value로 점수를 넣어주면 다음과 같다.

 

딕셔너리 자료형은 인덱스로 접근하는 것이 아닌, 위와 같이 key값을 [] 안에 넣어서 값을 뽑아낼 수 있다. 요소의 삽입과 삭제는 다음과 같이 이루어진다. 

 

 

또한 다음 함수들을 사용하면 value와 key값을 리스트의 형태로 반환할 수 있다. 

 

set

세트는 우리가 아는 집합을 의미한다. 즉, 요소들간의 중복이 불가능하다. 또한 요소의 순서가 유지되지 않는다. 

또한 우리가 익히 배웠던 교집합, 차집합, 합집합 등을 바로 계산할 수 있다!

 

 

이렇게 여러 자료형들에 대해서 알아보았는데, 한가지 더 짚고 넘어가고 싶은 것이 있다. 바로 깊은복사와 얕은복사이다! 문제를 풀때 가끔 이것때문에 문제가 생기는 경우들이 많아서 꼭 알고 넘어가셨으면 좋겠다. 

 

깊은복사와 얕은복사

위의 list a에 대해서 a[:], 즉 전체구간에 대해 슬라이싱을 하면, 얕은복사가 된다. 얕은 복사는 위에서 볼 수 있듯이 한쪽의 요소값을 바꿔도 나머지 하나에 영향을 미치지 않는다. 

하지만 2차원 리스트의 경우는 다르다. 리스트 a와 리스트 b의 주소는 다르지만, a[0]와 b[0]의 주소는 같아서 발생하는 문제로, a[0]에 10을 추가하였더니 b도 같이 바뀌는 것을 볼 수 있다. b의 값이 같이 바뀌는 것을 방지하고 싶다면, a에 요소를 추가할때 다음과 같이 새롭게 재할당을 해주면 된다. 

이렇게 하면 메모리 주소가 변경되어 b가 같이 바뀌지 않는다. 

 

깊은 복사의 경우 내부에 있는 모든 요소들이 새롭게 복사되는 것을 의미하는데, copy 라이브러리의 deepcopy를 사용하면 된다. 

 

연습문제

https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

https://www.acmicpc.net/problem/1929

 

반응형