본문 바로가기

💻프로그래밍/python

[파이썬 독학] 2. 자료형(Data type)정리 - 자료형 확인, 변환, 종류, 선언

반응형

 1. 자료형(Data type) 이란?

'자료형(Data type)'은 컴퓨터에게 이 객체가 어떤 형태인지 알려주는 것이라고 생각하면 된다. 사람은 '사과'라는 단어를 봤을 때 그것이 문자라는 것을 또는 2021을 보고 숫자라는 것을 자동으로 구분할 수 있다. 하지만 컴퓨터는 그것만 보고는 알 수 없기 때문에 그것이 문자형 태인지 숫자 형태인지 등을 알려주어야 한다. 파이썬에서는 변수를 선언할때 자동적으로 데이터 타입이 구분되지만 기본적으로 프로그래밍을 할 때는 이 자료형을 구분해주는 것이 중요하다. 뿐만 아니라 데이터를 분석할때 이 자료형에 따라서 분석 방법이 달라질 수 있기 때문에 자료형에 대해 이해하는것은 아주 기본적이면서도 필수적이다.

 

* '변수를 선언한다'에 대해 자세히 알고 싶다면 참고 *

[〚프로그래밍〛/python] - [파이썬 독학] 1. 변수(variable)의 정의, 선언, 교환 방법

 

 

 

 

 

2. 자료형 종류

그렇다면 자료형의 종류에는 어떤 것들이 있을까?

파이썬의 자료형 종류와 각 자료형의 표현방법을 알아보자.

< 자료형(Data Type) > < 표현 방법 >
숫자(int) a = 10
문자열(str) a = '10'
리스트(list) a = [10, 20, 30]
튜플(tuple) a = (10, 20, 30)
집합(set) a = {10,20,30}
딕셔너리(dict) a = [1:'키', 2:'몸무게']

 

 

 

 

3. 숫자형(Numeric) 데이터 타입

1) 숫자형 선언

파이썬에서 가장 많이 사용되는 숫자형으로는 크게 정수형(integer) 실수형(float)이 있다. 정수형은 소수점이 없는 숫자를 의미하며  int 로 표현된다. 실수형은 소수점이 있는 숫자로 float로 표현된다.

 

숫자형을 선언할 때는 a = 10처럼 숫자를 적어주면 된다. a = 10으로 선언하고 type() 함수를 이용하여 a의 데이터 타입을 확인해보면 10이 정수이기 때문에 int(정수형)이 출력된 것을 알 수 있다. 같은 방법으로 b = 1.111를 선언하고 데이터 타입을 확인해보면 b의 데이터 타입은 folat(실수형)인것을 알 수 있다.

 

 

 

 

 

2) 숫자형의 연산

이러한 숫자형 자료를 이용하여 사칙연산을 할 수 있는데, 우리가 흔히 아는 (+,-,*,/)를 '연산자'라고 표현한다.

숫자형 데이터 타입의 연산

 

 

 

 

4. 문자열(string) 데이터 타입

문자열은 문자가 쭉~~ 늘어있는 것을 의미하며  str 이라고 표현한다.

 

1) 문자열 선언

문자열을 만드는 방법에는 크게 4가지가 있다.

 

문자열의 처음과 끝에  '  ' 을 붙여주면 컴퓨터는 그 따옴표 사이에 있는 것을 하나의 문자열로 인식한다.  ' ' 와   " " 의 기능은 결과적으로는 같지만, 두 가지를 한 번에 섞어서 쓰면 안 된다.

 

 

' ' 와 " "를 섞어서 썼을때 발생하는 에러

SyntaxError: EOL while scanning string literal

 

 

 


2021은 숫자이지만 양 끝에 '  '를 붙여 a = '2021' 로 선언하면 해당 객체를 문자형으로 인식한다.

 

 

 

 

 

2) 문자열의 연산

숫자형과 마찬가지로 문자열 또한 연산자를 이용하여 연산이 가능하다.(덧셈과 곱셈)

 

문자열의 덧셈

먼저 a와 b에 각각 '빅데이터'와 '분석'을 선언하고 a+b 를 해보면 '빅데이터분석'이라는 하나의 문자열로 합쳐서 출력된다.

 

 

문자열의 곱셈

다음으로 a = '빅데이터'를 선언하고 a *3 해주면 '빅데이터빅데이터빅데이터'라는 하나의 문자열로 곱해서 출력된다.

 

 

 

※ 주의사항 ※

데이터 타입이 서로 다른 두 변수를 연산할 수 없다.

TypeError: can only concatenate str (not "int") to str

 

 

 

 

 

3) 문자열 인덱싱(indexing)

문자열 인덱싱은 문자열에서 꼭 알고 넘어가야 하는 개념이다. '인덱싱(indexing)'은 '무엇을 가리킨다'라는 의미이다. 사실 문자열에서 각각의 문자들은 번호가 매겨져 있는데, 이것을 이용하여 특정한 문자를 뽑아내는 것을 인덱싱(indexing)이라고 한다. 예를 들어 아파트에서 1층의 1호, 2호 3호...처럼 각각의 집에 호수를 매기는 것과 비슷한 맥락이다. 여기서 하나의 규칙이 있는데, 번호를 매길 때는 맨 처음 숫자는 0부터 시작해야 한다. 1이 아닌 0부터 시작하는 것은 그냥 컴퓨터의 규칙이다! 또한 띄어쓰기도 하나의 문자로 인식되어 번호가 매겨진다.

 

 

문자열의 인덱싱

 

a = '데이터 분석'으로 선언했을 때, 각각의 문자에 차례대로 번호가 매겨진다. 위에서 말했듯 띄어쓰기 또한 하나의 문자로 인식되어 하나의 인덱스를 부여받는다. 인덱스 개념은 앞으로도 계속해서 나오기 때문에 잘 알아두는 것이 중요하다. 그렇다면 여기서 0번째 있는 '데'라는 글자를 뽑아오고 싶을 때 어떻게 해야 할까?

 

 

a = '데이터 분석'으로 선언한 뒤, a[0]을 출력해보면 '데'가 출력되어 나오는 것을 알 수 있다. 즉, [ ] 사이에 내가 원하는 문자가 있는 위치의 번호를 적어주면 된다. 그런데 문자열이 너무 길어지면 앞에서 하나하나 카운트하기 힘들어진다. 이때는 뒤에서부터 카운트해주면 되는데, 뒤에서 부터 카운트할 때는 -1부터 시작하면 된다.

 

 

 

 

※주의사항※

숫자형은 인덱스가 없기 때문에 이 경우 숫자를 문자열로 변환하여 추출해야 한다.

TypeError: 'int' object is not subscriptable

 

 

 

 

 

4) 문자열 슬라이싱(slicing)

그럼 이제 하나의 문자가 아닌 여러 개의 문자를 한 번에 가져오고 싶을 때는 어떻게 해야 할까? 이 경우에 인덱싱 방법을 이용하여 하나하나 가져올 수도 있지만 데이터가 많아지면 이러한 방법은 굉장히 비효율적이다. 그것보다는 슬라이싱을 이용하여 한번에 가져오면 된다. 슬라이싱은 말 그대로 특정 부분을 잘라서(슬라이싱) 한번에 가져오는것이다. 내가 어디서부터 어디까지의 문자를 가져올 것인지 구간으로 정해서 입력해주면 된다.

 

 

슬라이싱을 하는 방법은  변수[ : : ]  로 표현하면 되는데, [이상:미만:간격]을 넣어 주면 된다. 즉  a[0:4: ] 라는것은 변수 a의 0번째부터 4번째 전까지 간격 없이 출력해라!라는 의미이다. 이때 간격이 필요 없다면 보편적으로  a[0:4] 로만 표현하여 사용한다.

 

 

 

여기서 응용을 해보자면 맨 처음 문자부터 가져올 때는 0을 쓰지 않고 해당 칸을 비워놔도 된다. 마찬가지로 맨 끝까지 출력하고 싶을 때도 칸을 비워 둘 수 있다. a = '123456789'로 숫자에 ' '를 이용하여 문자열로 만들어 선언한 다음 a[ : : 2] 즉 a의 처음부터 끝까지 2 간격으로 출력해보면 '13579'로 출력됨을 알 수 있다.

 

 

 

 

5. 데이터 타입 확인 & 변환 

마지막으로 해당 자료형이 어떤 데이터 타입인지 확인하고, 내가 원하는 데이터 타입으로 변환하는 방법을 알아보겠다.

 

1) 데이터 타입 확인 :  type() 

데이터 타입을 확인할 때는 type()의 괄호 안에 내가 확인하고 싶은 변수를 넣어주면 된다.

 

 

2) 데이터 타입 변환

데이터 타입은 위에서 언급했듯 여러 가지가 있다. 그중에서 가장 많이 쓰이는 정수형을 문자열로 변환, 문자열을 정수형으로 변환하는 것을 알아보겠다 (원리는 똑같기 때문에 자신이 원하는 데이터 타입을 사용하여 변환해주면 된다.)

 

 

● 정수형(int) →  문자열(str) :  str( )

 

즉, 2021(숫자형)에서 '2021'이라는 문자열로 변환되었음을 알 수 있다. 위에서는 설명을 위해 단계별로 코드를 작성했지만 문자열로 데이터 타입을 변환하고 싶다면 str() 의 괄호() 안에 내가 변환하고 싶은 변수를 넣어주면 된다.

 

 

 

● 문자열(str) → 정수형(int) : int( ) 

같은 원리로 이번에는 문자열을 정수형으로 변환해보자. 이번에는 str()의 괄호 안에 내가 변경하고 싶은 변수를 적어주면 된다.

 

 

 

 

반응형