본문 바로가기

Data analysis story

[Python]-파이썬 자료형, 튜플 자료형, 세트 자료형(집합 자료형)[시퀀스 자료형의 의미, 튜플의 생성, 예시, 튜플의 생성, 삭제, 변경, 튜플의 인덱싱과 슬라이싱, 더하기, 곱하기, tuple(), 세트의 ..

안녕하세요, 여러분!

오늘은 파이썬의 자료형, 그 세 번째 시간으로!!

튜플에 대해 배워보려고 합니다!

 

저번 시간까지 해서 숫자, 문자열, 리스트 자료형까지 다뤄보았습니다!

그리고 마지막에 시퀀스 자료형에 대해서도 언급했었죠!

 

시퀀스 자료형은 순서를 가진 요소들의 집합이라고 했었습니다.

저번 시간까지 배운 문자열과 리스트는 시퀀스 자료형이었고

그리고 오늘 배울 튜플도 시퀀스 자료형이기 때문에

 

공통적으로 시퀀스 자료형에서 가능한 연산과 함수들

(저번 포스팅에 올려 놓은 표!)

오늘 배울 튜플에도 적용됩니다!!

그렇다면 튜플이 이 시퀀스 자료형이라는 것을 알았으니!

이제 본격적으로 튜플 자료형이 무엇인지 알아보도록 하죠!!

 

튜플

 

튜플은 한마디로 정의하자면 변경될 수 없는 리스트입니다.

, 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없습니다!!

 

따라서 프로그램을 짤 때 어떤 변수에 들어있는 값이 변하지 않기를 원한다면

리스트 대신 튜플을 사용해야겠죠!

 

리스트를 생성할 때는 ‘[ ]’를 사용했지만 튜플을 생성할 때는 ‘( )’를 사용하는데요!

 

튜플 생성과 예시

튜플의 전체적인 구조는 이렇습니다!

그럼 다양한 튜플의 예시를 확인해보죠!

먼저, 튜플 또한

빈 문자열, 빈 리스트를 생성했던 것처럼

빈 튜플을 생성할 수 있는데요

 

()를 사용하면

빈 튜플을 생성할 수 있습니다.

 

그리고 리스트와는 다르게

튜플 안에 하나의 요소를 생성할 거면

요소 뒤에 반드시 ,를 같이 써주어야 합니다.

 

리스트와 마찬가지로 튜플 안에 들어가는 값은

숫자도 가능하고 문자도 가능한데요!

밑의 예시를 보면 혼합 자료형도 같이 한 튜플 안에 넣을 수 있습니다!!

튜플 삭제, 변경

앞서 말했듯이 튜플은 요소 값을 지우거나 변경하는 것이 불가능하다고 했는데요!!

정말 그런지 보겠습니다!!

이런 튜플이 있다고 해보죠!!

del 함수를 이용해서 첫 번째 요소인 “red”를 지워볼게요!!

TypeError를 읽어보면 튜플은 아이템 삭제를 지원하지 않는다고 하며

에러가 발생하네요!!

그럼 이제 변경해볼까요??

맨 앞의 “red”“yellow”로 바꾸어 볼게요!!

 

어떤가요??

이번에도 튜플은 아이템 할당을 지원하지 않는다는 에러가 발생하네요!!

 

이렇게 확인해 보았듯이, 튜플은 요소의 생성, 삭제, 수정이 불가능합니다!!

 

실제 프로그램에서는 값이 변경되는 형태의 변수가 훨씬 많기 때문에 평균적으로

튜플보다는 저번 포스팅에서 배운 리스트를 더 많이 사용하지만

값이 변경되면 안되는 변수를 만들 때는 꼭 필요하니 잘 알아두도록 합시다!!

 

튜플의 인덱싱과 슬라이싱, 더하기, 곱하기

이번 포스팅 맨 처음에 말했듯이

튜플도 시퀀스 자료형입니다.

 

그렇기 때문에

튜플에서도

이 모든 것이 가능하겠죠??

먼저 튜플의 인덱싱과 슬라이싱, 더하기, 곱하기를!! 예를 통해 보여드리도록 할게요!!

(문자열과 리스트와 다른 점은 없어요!!)

저번 포스팅들의 문자열과 리스트를 잘 숙지했다면 이는 전혀 어렵지 않을겁니다!!

다른 시퀀스 기본 함수들도 튜플에 적용해서 직접 해보기를 추천드려요!!

 

+) 그리고 이제껏 배운 시퀀스 자료형을

튜플 자료형을 바꾸고 싶을 때는 tuple()이라는 함수를 사용하면 됩니다!

 

바로 이렇게 말이죠!!

 

세트

이제는 파이썬의 네 번째 자료형!! 세트에 대해서 배워보겠습니다.

 

세트(set)는 우리가 수학에서 배웠던 집합입니다.

, 집합 자료형인데요!

 

앞서 배운 리스트와 튜플에서는 중복되는 값이 들어있어도 상관이 없었는데요!

 

집합 자료형은 중복되지 않은 항목들이 모인 것입니다!!

그리고 집합 자료형은 순서가 없습니다!!

 

앞서 본 리스트와 튜플은 순서가 있는 시퀀스 자료형이었잖아요!!

이런 리스트, 튜플과 비교되는 세트의 특징을 알았으니 이제 본격적으로 세트에 대해 배워보도록 합시다!!

세트 생성하기

 

집합 자료형은 set 키워드를 통해 만들 수도 있고

{ }를 이용해 만들 수도 있는데요!!

 

전체적인 구조는 이렇습니다.

예시를 봅시다!

이렇게 리스트 자료형을 set이라는 키워드를 통해서 집합 자료형으로 바꿀 수 있고요!

혹은 그냥 { }를 이용해 만들 수도 있습니다.

그런데

이렇게 set를 만들지는 않습니다!!

왜냐하면 set은 하나의 argument만 받기 때문이죠!

주의하세요!!

집합 자료형은 중복 요소를 허용하지 않으니

이런 결과가 나타나구요!

순서가 없기 때문에

number라는 변수에 2,1,3을 차례로 집어넣어도

number를 출력하면

오름차순으로 정리되어 나옵니다!

세트도 리스트, 튜플과 마찬가지로

숫자 자료형, 문자 자료형, 혼합 자료형 등등이 구성 요소가 될 수 있습니다!!

세트의 인덱싱

세트는 리스트나 튜플과 달리 순서가 없기 때문에!!

인덱싱이 불가합니다!

예를 봅시다!!

 

정말 인덱스가 되지를 않네요!!

만약 인덱싱으로 접근하려면

리스트나 튜플로 변환한 후 해야 합니다!!

이렇게요!

 

세트에 요소 추가하기

세트에 요소는 추가할 수 있는데요!

그때는 .add를 사용해주면 됩니다.

이렇게 말이죠!!

+)여러 개의 값을 한꺼번에 추가하고 싶다면

.update를 사용하면 됩니다!!

, 꼭 리스트나 튜플로 여러 개의 값을 묶어서

추가해주어야 합니다!!

 

세트의 요소 지우기

세트는 인덱스가 통하지 않으므로

remove를 사용하여 지우고 싶은 값을 입력한 후 세트의 요소를 지워주면 됩니다!!

이렇게요!!!

 

집합 자료형 활용하기

set 자료형이 정말 유용하게 사용되는 경우가

교집합, 합집합, 차집합을 구할 때입니다!!

먼저 교집합의 예부터 볼게요!

 

& 연산자를 사용하거나

.intersection()을 이용하면

두 집합 자료형의 교집합을 구해낼 수 있습니다!!

이를 활용한 예를 볼게요!

파티에 참석한 사람들의 명단이 세트A와 세트B에 각각 저장되어 있다고 가정했을 때,

두 개의 파티에 모두 참석한 사람들의 명단을 출력하려면 어떻게 해야할까요?

이럴 때 바로 세트 자료형과 교집합 연산 &를 사용하는 겁니다!!

이런 두 개의 세트 자료형이 있다고 가정했을 때

이렇게 집합 자료형 교집합 연산을 활용하면

두 파티 모두에 참석한 명단을 뽑을 수 있는 것이죠!!

아주 유용하죠?

 

그러면 이제 합집합을 알아보죠!!

 

위의 예에서 알 수 있듯이

|union을 사용하면

합집합을 구할 수 있답니다!

 

마지막은 차집합을 구하는 연산입니다!!

 

- 연산과 difference를 사용하면 됩니다.

 

다만, intersection과 union을 사용할 때는

s1과 s2의 순서가 상관없었지만

difference의 경우

어느 집합에서 어느 집합을 뺄 것인지, 그 순서가

상관이 있기 때문에

유의하셔야 합니다!!

오늘은 이렇게 해서 파이썬의 자료형 세번째 시간으로

튜플 자료형과 세트 자료형에 대해서 알아보았습니다!!

다음 시간에는 딕셔너리 자료형으로 찾아 뵙도록 할게요!!