본문 바로가기

Language/Python

Python 06 - 파이썬의 자료형과 타입

 파이썬의 자료형은 숫자형, Boolean, Set, Dictionary, 그리고 시퀀스형이 있다.

 

숫자형은 숫자를 나타내는 객체로 정수형(int), 실수형(float), 복소수형(Complex)이 있다. 

 

숫자형에서 주의할 점은 주로 실수형에 있다. 컴퓨터가 실수형 데이터를 가지고 비교 연산을 할 때 오류가 생길 확률이 매우 높다.

컴퓨터에서 실수의 경우 유리수 + 무리수의 값을 비트로 표현하기에 매우 어려워 근사값을 이용하기 때문에 문제가 발생한다.

예를 들어서 0.3 같은 숫자 리터럴은 사실 0.300000000004이기 때문에 비교 연산이 어렵다.

 

또 반올림의 형식이 우리가 익숙한 사사오입(반올림 할 위치의 숫자가 5일 때 앞자리에 상관없이 올림) 방식이 아니라 오사오입 (반올림 할 위치의 숫자가 5일 때 앞자리가 짝수일 시 내림, 홀수일 시 올림) 방식을 이용하기 때문에 신경쓸 필요가 있다.

 

Boolean형은  True,False로 참과 거짓을 나타내는 객체이다.

 

Boolean형에서는 True와 False로 인식되는 다른 자료형을 알아두면 좋다. True의 경우는 대다수 이기 때문에 False의 경우만 알면 이해하기 편하다. False value의 경우 숫자형은 0, 문자열은 "", 그리고 None (아무것도 없다)이 있다. 그래서 이 외의 값은 대다수 True value로 인식하면 이후에 if문을 사용할 때 활용하기 좋을 것 이다.

 

시퀀스형은 순서가 있는 객체로 문자열(str), list, tuple이 있다.

 

먼저 시퀀스 자료형의 특징에 대해서 알아보고 각각의 객체에 대해서 살펴보자.

 

시퀀스 자료형은 순서가 있는 객체로 Index가 존재한다. 객체가 가지고 있는 요소 각각이 위치를 가지고 있는 것이다. 그래서 [ : : ] 와 같은 slicing 방법을 사용할 수 있다. slicing이란 시퀀스 자료형의 원하는 범위의 인덱스를 지정하여 가져와 사용할 수 있는 방법이다. 

 

시퀀스 자료형은 공통적으로 사용할 수 있는 매서드들이 많다.

 

.index()와 같이 원하는 요소의 인덱스를 반환하는 매서드, .count()와 같이 원하는 요소의 갯수를 반환하는 매서드, sort()와 같이 객체를 오름차순으로 정렬하는 매서드 등등 시퀀스 자료형에 대한 다양한 매서드를 파이썬에서 지원한다

 

또 시퀀스 객체는 "hello"*10 or "hello" + "hello"와 같이 연결해서 사용할 수 있는 장점이 있다. set과 dict와 같이 순서가 없는 객체는 사용 불가능한 기능이다. 

 

이제 시퀀스 객체에 대해 각각 알아보자.

 

String형은 문자열을 나타내는 객체이다.

 

stirng 형은 문자를 나타내는 객체로 수정이 불가능하다.

(가변 객체와 불변 객체는 파이썬에서 있어서 꽤 중요한 내용 이기 때문에 이후에 따로 정리할 예정이다)

.split()과 같이 원하는 요소를 기준으로 나누어 리스트를 반환하는 매서드, strip()과 같이 문자열 양 옆의 공백을 제거해주는 매서드 등이 있다. .split()과 같은 매서드는 요소의 언패킹을 할 때 주로 사용한다. ( 패킹과 언패킹도 이후에 좋은 주제 )

 

List는 순서가 있고 수정할 수 있는 자료 구조이다. 

 

list의 가장 큰 특징은 수정할 수 있다는 점이다. 리스트 안에는 다양한 객체가 요소로 들어갈 수 있다. append(), insert(), del, update()등의 매서드를 이용하여 매서드와 결합된 객체에 변화를 줄 수 있는 장점이 있다. 

 

Tuple은 순서가 있고 수정할 수 없는 자료 구조이다.

 

tuple의 가장 큰 특징은 수정할 수 없는 자료구조라는 점이다. 프로그램의 코드를 작성하다보면 예상치 못한 동작으로 인해 데이터의 값이 변할 수 있다. 그래서 실제로는 tuple을 사용하는 경우가 좋은 경우가 꽤 있다. 건드리면 안되는 변수에 접근하는 경우를 방지해주며, 튜플은 회원 가입 정보와 같은 수정되면 안되는 데이터를 관리하기에 용이하다. 또 불변 객체이기에 같은 크기의 list보다 가볍다.

 

tuple은 이와 같이 제한된 자료형이기에 지원하는 매서드의 종류가 거의 없다. 시퀀스형의 매서드 위주로 알아두면 좋다.

 

Dictionary는 key : value 쌍으로 데이터를 묶어 카테고리로 관리하는 객체이다.

key와 value 쌍을 item이라 한다. dict는 key의 값이 중복되면 안되는 특징이 있고, 순서가 정해지지 않은 객체이다.

하지만 ["key"]를 이용해 원하는 value를 가져올 수 있다. values(), keys()와 같이 key,value를 각각 담은 list를 반환하는 매서드가 있으며 items()와 같이 key와 value를 묶은 리스트를 반환하는 매서드도 있다. 

 

Set은 수학에서 의미하는 집합과 같은 객체이다.

 

set은 value의 중복이 불가능하며 순서가 정해지지 않은 객체이다. set은 중복된 값을 처리하는 목적으로도 주로 사용되며, 수학적인 개념에서 합집합,교집합,차집합,여집합 등등의 기능을 가지고 있는 매서드를 가지고 있다. 

 

list,tuple,dict,set를 파이썬의 자료 구조라 한다.

 

자료 구조는 공통적으로 값을 추가,변경,제거하는 매서드를 가지고 있으며 이를 패킹, 언패킹 방식으로  만들 수 있으며 해시,해시 맵, 해시 테이블 등등의 구조적인 개념에 대해서 이후에 다루어볼 예정이다.