태코놀로지

파이썬이 제공하는 기본 자료형 (Numbers and Strings) 본문

Python3/EECS-WinterSchool

파이썬이 제공하는 기본 자료형 (Numbers and Strings)

태코놀로지 2017. 1. 28. 12:48

2.1 Numbers and Strings

파이썬에서 자주 사용되는 자료형에 대해서 알아보면, 대표적으로 int, float, str, list, tuple, dict, set 등이 있겠다. 그중에 list, tuple, dict, set의 경우 리스트, 튜플, 사전, 집합 자료형과 대응되는 형태로 이들에 대해서는 다음 강의에서 좀 더 세밀하게 다룬다. 이번 강의에서는 앞에서 언급했던 자료형중 숫자를 표현하기 위해서 사용하는 int와 float, 그리고 문자열을 나타내는 str 타입에 대해서 알아본다. 각 타입에 따라서 사용할 수 있는 함수 및 기능에서 차이점이 있다. 이 차이점에 주목하여 타입별로 가진 특징을 확인해보자.


일단 기본적으로 파이썬에서 제공하는 타입에 대해서 확인해보자. 'type' 함수를 통해 전달된 인자가 어떤 타입의 데이터인지 확인할 수 있다. 대표적인 사례를 통해서 위에서 언급 했던 일곱 가지 타입에 대해서 확인해본다.


이어서는 숫자 타입인 int와 float가 가지고 있는 성질에 대해서 파악해보자. 그리고 숫자 타입에 대해서 처리할 수 있는 연산 작업에 대해서 정리해본다. C 또는 Java에서 제공하는 '++' 연산자가 파이썬에 없음에 주의하자.



숫자 타입, 그 중 int 타입에 적용가능한 연산들을 학습했다. 이번에는 int 타입이 아닌 데이터들을 'int' 명령어를 사용하여 int 타입의 데이터로 변환시킨다. 이때 변환된 int 타입의 데이터는 위에서 학습했던 연산자를 그대로 적용할 수 있다. 특정 데이터에 대해서 int 연산 작업이 필요하다면 캐스팅을 사용하면 된다.



파이썬은 기본적으로 '큰 수'에 대한 연산을 제공한다. 구골이라는 숫자는 구글이라는 명칭의 모태가 되었던 숫자로 10의 100승을 의미한다.여담으로 파이썬 2에서는 int의 크기는 32비트로 제한했고 -2,147,483,648 ~ 2,147,483,647까지 저장할 수 있었다. 그리고 long 타입은 이보다 많은 64비트의 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808까지 표현할 수 있었다. 대부분의 언어에서 아래처럼 구골에 대한 연산을 수행하면, 컴퓨터가 허용한 공간보다 더 많은 공간을 차지했다는 의미로 정수 오버플로(integer overflow)가 발생할 것이다. 그러나 파이썬 3에서는 아무 문제없이 아주 큰 수에 대한 표현 및 연산이 가능하다.



숫자를 표현하는 타입 중 정수를 표현하는 int 타입에 대한 연산 및 특징을 알아봤다면, 지금부터는 실수를 표현하는 float 타입에 대한 캐스팅을 수행해본다. int 타입으로 캐스팅 할 때와 유사한 모습을 볼 수 있으며, 직관적이고 유연하게 적용되는 것을 확인할 수 있다.



앞서 다룬 내용이 숫자(정수, 실수)를 표현하는 타입(int, float)에 대해서 소개했다면, 이제부터는 문자, 문자열을 다루는 방법에 대해서 알아본다. 파이썬3에서는 유니코드(Unicode) 표준에 대한 지원으로 전세계에서 쓰이는 언어들의 많은 기호를 표현할 수 있다. 다른 언어와는 달리 혹은 유사하게도 파이썬에는 문자열이 불변(immutable)하다. 따라서 문자열 자체는 변경할 수 없지만, 동일한 효과를 얻기 위해 문자열의 일부를 다른 문자열로 복사할 수 있다.



문자열에 적용가능한 덧셈(+) 연산과 곱셈(*) 연산 및 캐스팅 방법에 대해서 알아보자.



문자열은 불변하기 때문에 특정 인덱스에 문자를 삽입하거나 변경할 수 없다. 따라서 아래의 그림처럼 'Henny' 문자열을 'Penny'로 변경할 때 에러가 발생하게 되고, 동일한 효과를 얻기 위해서는 우회적으로 replace( ) 함수를 통한 연산 또는 문자열 슬라이싱을 통해 새로운 문자열을생성해야한다.



슬라이스를 사용하여 한 문자열에서 문자열의 일부(substring)를 추출할 수 있다. 대괄호를 사용하여 시작(start), 끝(end) 오프셋과 간격(stride)을 명시하여 슬라이스를 정의 할 수 있다. 이들 중 일부는 생략이 가능하다. 특히 보다 가독성을 높이고 파이써닉하게 사용하기 위해서는 한 슬라이스에 시작, 끝, 스트라이드를 한 번에 모두 쓰는 것을 지양하고 있다.


슬라이스는 백스텝이 가능하고, 이를 활용하면 문자열을 끝에서부터 출력할 수 있다. 이는 문자열을 리버싱하는 가장 쉬운 방법이다. 또한 슬라이스는 단일 인덱스 조회라기보다는 까다로운 오프셋 조건을 광범위하게 조회하는 것에 더 가깝다. 첫 번째 문자열 이전의 슬라이스 오프셋은 0으로 간주하고, 마지막의 다음 오프셋은 -1로 간주한다.



문자열을 보다 쉽고, 다양하게 다루기 위해서 파이썬 3에서 제공하고 있는 기본적인 문자열 함수에 대해서 알아보자. 아래의 예시에서 다루고 있는 문자열 관련 함수들은 총 11가지로 아래의 표와 같다. 이밖에도 문자열을 다루는데 필요한 외부 라이브러리를 호출하여 사용할 수도 있다.


count 

문자 개수 세기

lstrip

좌측 공백 지우기 

find

문자 위치 찾기 

rstrip 

우측 공백 지우기 

index

문자 위치 찾기

strip

양측 공백 지우기 

join

문자 삽입하기

replace

문자열 바꾸기 

upper

소문자를 대문자로

split

문자열 나누기 

lower

대문자를 소문자로

format

포맷에 맞춰 출력하기 



문자열을 생성하고 다루는 것에 대해서 배웠다. 이제는 생성된 문자열을 어떻게 출력하면 좋을 지 알아본다. 파이썬 3에서는 '%' 연산자를 통해서 출력하는 경우와 'format' 함수를 통해서 출력하는 방식이 대표적이다. 최근에는 format 함수를 통해서 출력할 것을 권장하고 있기 때문에 아래와 같이 format 함수를 통한 출력방법에 대해서 소개한다.




Comments