일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- django framework
- 국산 네트워크
- virtualenv
- 피보나치 수
- IO Visor
- 문자열
- data structure
- KTNF
- 다이나믹 프로그래밍
- 프로젝트 오일러
- 파이썬3
- project euler
- ubuntu
- Hash function
- Python
- Euler
- 백준 알고리즘
- Python3
- virtualenvwrapper
- Django
- Anaconda
- 아나콘다
- FNCP
- 주피터
- jupyter
- linked list
- Hash Table
- 우분투
- Ipython
- 파이썬
- Today
- Total
태코놀로지
파이썬이 제공하는 기본 자료형 (Numbers and Strings) 본문
2.1 Numbers and Strings
이어서는 숫자 타입인 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 함수를 통한 출력방법에 대해서 소개한다.