- 숫자
- 버전 2까지 int와 long을 별도로 제공하였다.
- int는 fixed precision 정수형이었고
- long은 arbitrary precision 정수형이었다.
- PEP 237 로드맵에 따라 버전 3부터는 int 단일형으로 통합되었다.
- int는 arbitrary precision을 지원하며, 파이썬에서 fixed precision은 더이상 지원되지 않는다.
- bool 타입 또한 내부적으로 int형으로 처리된다.
- * 임의 정밀도(arbitrary precision)?
- 무제한 자릿수를 제공하는 정수형을 의미한다.
- 자릿수 단위로 쪼개어 배열 형태로 표현하는 것이다.
- overflow가 발생하지 않는다는 장점이 있지만, 속도가 느리다는 단점이 있다.
- overflow에 대한 설명을 담은 블로그 링크 :
m.blog.naver.com/PostView.nhn?blogId=complusblog&logNo=221158544120&proxyReferer=https:%2F%2Fwww.google.com%2F
- 버전 2까지 int와 long을 별도로 제공하였다.
- 매핑
- 키와 자료형으로 구성된 복합 자료형
- 파이썬에 내장된 매핑 자료형은 딕셔너리
- 집합
- 중복된 값을 갖지 않는 자료형
- 입력순서가 유지되지 않는다
- 시퀀스
- 대상의 순서 있는 나열
- list가 시퀀스 타입
- 불변 시퀀스 - str, tuple
- 가변 시퀀스 - list
- 원시타입(primitive type)
- C : 원시타입만을 지원
- 원시타입은 메모리에 정확하게 타입 크기만큼의 공간 할당하고
- 그 공간을 값으로만 채운다.
- 자바 : 원시타입과 객체 동시 지원
- 여러가지 기능 지원 (ex. 대소문자 바꾸기, shifting 등등)
- 객체 타입의 경우 편리한 기능 제공하지만, 메모리 더 많이 차지
- 파이썬 : 원시타입 지원하지 않는다
- 느린 속도와 더 많은 메모리 차지하더라도 다양한 기능을 제공하는 것에 주목
- 원시타입을 포기하는 대신, 다양한 기능을 얻었다
- C : 원시타입만을 지원
- 객체
- 파이썬은 모든 것이 객체이다.
- 불변 객체
- 부울, 정수, 실수, 튜플, 문자
- a = 10; b = a; 인 상황에서 a = 11로 바꾸어도 b는 바뀌지 않는다 (불변 객체라서)
- print(id(a), id(b)) 찍어보면 전자는 a=11로 하며 바뀌었지만 b는 그대로이다.
- 가변 객체
- 리스트, 집합, 딕셔너리
- a = [1, 2, 3]; b=a;인 상황에서 a[0]=10으로 바꾸면 b도 바뀐다 (가변 객체라서)
- print(id(a), id(b)) 찍어보면 전자, 후자 모두 a[0]=10 해도 메모리 주소 동일하다
- is는 id값을 비교하는 함수, ==는 내부 동일한 값을 가지는 지 비교하는 연산자
- 속도
- 원시타입이 지원된다면, 메모리에서 값을 꺼내 연산만 수행하면 된다.
- 하지만 원시타입이 지원되지 않는 파이썬의 경우, 객체를 꺼내는 등 부가적인 작업 필요하다.
- 따라서 파이썬이 C나 자바 등 원시타입이 지원되는 언어 대비 느린 것이다.
- numpy는 빠른 속도로 유명한데, 넘파이는 C로 만든 모듈이며 내부적으로 리스트를 C의 원시타입으로 처리하기 때문이다.
- 자료형 : 데이터의 속성 (정수형, 실수형, 문자열 등)
- 자료구조 : 자료형을 기반으로 하는 객체
'다전공_컴퓨터공학 > 알고리즘 문제풀이' 카테고리의 다른 글
[파이썬 알고리즘] 6장 - 문자열 조작 (recorder log files) (0) | 2020.11.02 |
---|---|
[파이썬 알고리즘] 6장 - 문자열 조작 (valid palindrome) (0) | 2020.11.02 |
[파이썬 알고리즘] 4장 - 빅오 (0) | 2020.10.31 |
[파이썬 알고리즘] 3장 파이썬 문법 (0) | 2020.10.31 |
[파이썬 알고리즘] 2장 프로그래밍 언어 선택 (0) | 2020.10.30 |