python에서 정해져 있는 데이터 타입을 built-in data type 이라고 한다
python의 built-in data type은 일반 data type + 자료구조 (data structure)이다
- Numeric
- Sequence
- Text Sequence
- Mapping
- Set
- Bool
1. Numeric
숫자형 데이터 타입
프로그램에서 일반석으로 사용하는 숫자는 정수, 실수, 복소수
a = 100 #정수
b = 3.14 #실수
c = 3.14E10 #실수 지수표현
##(3.14 * 10의 10승/ 3.14E2 = 3.14 * 10의 2승/ 3.14E-10 = 3.14 * 10의 -10승)
d = 0o7 #8진수(0o)
e = 0xAB #16진수(0x) 0XAB = 11+10*16 = 171
type(d) ## int
type(e) ## int
※ Operator(연산자)
+ 연산자는 이항연산자이다
프로그램에서 이항연산자는 같은 데이터 타입에 대해서 연산을 수행한다
10 + 3.14 ## 13.14
하지만 파이썬에서는 이 연산이 가능한데 그 이유는 내부적으로 타입을 바꾸어서 실행하기 때문이다
int형의 10을 float형의 10.0으로 바꾸어 계산한다.
type(10 + 3.14) ##float
<나누기>
print(3/4) ## 0.75
다른 언어에서는 결과값으로 0이 나오지만 파이썬에서는
내부적으로 실수처리를 하여 연산하므로 0.75라는 값이 나온다.
나머지를 구하는 연산자는 % 이다
print(3%4) ## 3
몫을 구하는 연산자는 // 이다
print(3//4) ## 0
2. Sequence
순서가 있는 자료형(자료구조), 집합형 자료구조를 말하고 주로 사용하는 3가지를 다루었다.
- <class list>
- <class tuple>
- <class range>
List
literal : []
리터럴(literal)이란? 쉽게말해 코드에서 어떻게 표현하는지를 말한다
a = [] #empty list or
a = list()
a = [1, 2, 3]
# a = [1,2,3,[4,5],6] <= 이렇게 작성하지 않도록 하자! 다음에 한칸을 띄어서 표현하는게 관용적
!!
array와는 다른 데이터형이다
다른 언어에서 많이 사용하는 array와 달리 list안에는 같은 데이터 타입만 들어가는 것이 아니다
서로 다른 데이터타입도 한 리스트안에 넣을 수 있다
a = [1, 2, 3.14]
b = [1, 2, [3, 4], 5]
Slicing
연속적인 부분집합을 만들어내는 것!
a = [1, 2, 3, 4, 5, 6]
print(a[1:3]) ### [2, 3]
시작 인덱스는 inclusive하고 끝 인덱스는 exclusive하고
결과의 데이터타입은 원본의 데이터타입과 동일하다
print(a[1:2]) ## 2 (X), [2] (O)
print(type(a[1:2])) ##<class 'list'>
print(a[1:]) # 1부터 끝까지 [2, 3, 4, 5, 6]
print(a[:3]) # 처음부터 index 2까지. [1, 2, 3]
print(a[:]) # 처음부터 끝까지 [1, 2, 3, 4, 5, 6]
리스트 연산
리스트 연산은 연산자 오버로딩이 이루어져서 가능한 결과이다.
원래 +, *는 숫자를 더하는 기호인데 연산자 오버로딩을 이 발생해서 의미기 변경된다.
a = [1, 2, 3]
b = [4, 5, 6]
print('a + b = ', a+b) ## a + b = [1, 2, 3, 4, 5, 6]
print('a * 3 = ', a*3) ## a * 3 = [1, 2, 3, 1, 2, 3, 1, 2, 3]
append
리스트 맨 마지막에 원소를 추가
a = [1, 2, 3]
a.append(4)
print(a) ## [1, 2, 3, 4]
정렬
sort, sorted
기본은 오름차순 정렬(작은값에서 큰값으로)
## sort ##
a = [4, 7, 10, 2, 8, 1, 9]
a.sort()
print(a) ## [1, 2, 4, 7, 8, 9, 10]
result = a.sort()
print(result) ## None 파이썬은 값이 없음을 표현하는 예약어가 null이 아닌 None이다
## sorted ##
b = [4, 7, 10, 2, 8, 1, 9]
print(sorted(b)) ## [1, 2, 4, 7, 8, 9, 10]
print(b) ## [4, 7, 10, 2, 8, 1, 9]
- sort는 리스트 원본을 정렬하고 정렬된 리스트를 리턴하지 않는다
- sorted는 리스트 원본은 수정하지 않고 정렬된 리스트를 리턴한다
sort보다 sorted가 더 기능이 많고 편리하기 때문에 주로 sorted를 이용한다
sorted는 속성을 이용해서 정렬 방법을 지정할 수 있다
정렬 방법을 내림차순으로 바꾸는 방법
sorted(b, reverse=True) ## [10, 9, 8, 7, 4, 2, 1]
더 많은 속성 : 파이썬 docs
Tuple
literal : ()
리스트와 가장 큰 차이점으로 튜플은 read only이다!
튜플 내 값을 변경할 수 없다.
a = () # empty tuple or
a = tuple()
b = (1, 2, 3)
print(type(b)) ## <class 'tuple'>
# 중첩 튜플
a = (1, 2, 3, (4, 5), 6)
a = [1, 2, 3, (4, 5), 6]
a = (1, 2, 3, [4, 5], 6)
요소가 1개인 튜플 선언 방법
## (X) a = (1) 이 방법으로 선언하면 a는 int다.
a = (1, )
이유는 첫 번째와 같이 표현했을때 어떤 상황에서의 소괄호인지 헷갈리기 때문이다.
일반적으로 우리가 ()를 사용하는 경우는 '(3 + 4) * 5'와 같이 일반 연산시 연산자 우선 순위를 정할 때 사용한다.
또한 튜플은 소괄호를 생략하여 표현할 수도 있다.
a = 1, 2, 3
print(type(a)) ##<class 'tuple'>
'Programming > Python' 카테고리의 다른 글
[Python]Data type 2 - Sequence, Text Sequence, Mapping, Set, Bool (0) | 2022.01.20 |
---|---|
[python] id()함수과 숫자 객체의 메모리 주소 값 (0) | 2022.01.19 |
[Python] 주석 처리 방법과 변수 (0) | 2022.01.19 |
[pygame] 개체 화면에 나타내기_미완성 (0) | 2021.11.05 |
[collections 모듈] defaultdict_딕셔너리에 기본값 설정하기 (0) | 2021.10.05 |