돈이 만드는 세상
#1-1 Python 초급 강의 - 자료형 본문
변수
a = 1
my_first_var = 3
각 변수에는 주소가 16진수로 이루어진 주소가 존재한다. 변수를 왜 이름으로서 저장하는지에 대해서는 재활용성(Reusability)을 이야기할 수 있다.
target = 1
target = target + 1 * 3 # 4
target * 10 * 10 # 400
### 자료형
파이썬의 가장 큰 특징 중 하나는 자료형에 대한 선언을 따로 하지 않는 것이다. 이것에 대한 장점도 있지만, 단점도 존재한다.
숫자형(integer, float, double)
파이썬 내에서 처리를 할 경우 int/float를 따로 구분하지 않는다. C의 경우 int/float의 bytes
에 따라 자료형이 나뉘게 되는데 파이썬은 그럴 필요가 전혀 없다.
- int
- float
a = 1
이라는 코드를 통해 a에다가 1이라는 숫자를 할당할 경우 파이썬은 숫자라는 것만 인식해 RAM에다가 저장을 한다. C의 경우 int a = 1;
를 통해 볼 수 있듯이, data type을 정해주어야 한다. 하지만, 파이썬은 _자료형 선언에 대해 신경을 안 써도 되지만 그만큼 추가적인 시간을 필요_로 하게 된다. _C언어의 경우 컴파일러가 인식하기 전에 개발자가 먼저 정해주기 때문에 속도면에서 파이썬에 비해 빠른 속도_를 보여주게 되는 것이다.
리스트(list)
# python에서 리스트를 만드는 방법
class_score1 = [90, 30, 60]
class_score2 = list(90, 30, 60)
파이썬의 경우 c언어의 배열과 다르게 동일한 속성의 데이터가 아닌 파이썬에서 다루는 어떠한 형태에 데이터든 리스트의 데이터로써 다룰 수 있다.
class_score1 = [1, 2, [1, 2]]
class_score2 = ['hi', 1, [1, 2]]
class_score1[1] # 2가 출력됨
파이썬은 독특한 인덱싱 방법을 지원한다.
class_score1[0:1] # 1
class_score1[0:2] # 1, 2
class_score1[1:] # 2, [1, 2]
class_score1[:2] # 1, 2
class_score1[-2:] # [1, 2], 2
class_score1[:] # 1, 2, [1, 2]
#### 다차원 리스트
[[1, 2], [1, 2, 3]]
[
[1, 2, 4],
[1, 2, 3],
[1, 3, [1, 2]]
]
### 튜플(tuple)
a = (1, 2)
type(a) # tuple
# 인덱싱이 가능하다.
a[1] # 2
**mutable vs immutable**
a = [1, 2]
a[0] = 3
print(a) # [3, 2]
리스트의 경우 mutable해서 변환이 가능하지만 tuple의 경우, immutable하기 때문에 변환이 불가능하다. _이러한 특성 때문에 튜플 자료형에서 변수에 대해 추가/삭제/변경 등의 operation이 일어날 때는, 기존의 값을 전부 버리고, 아예 새로운 값으로 대체된다는 특징_을 갖고 있다.
문자열(string)
a = "string"
문자열을 저장할 때는 _글자 하나당 방(메모리 주소)을 배정해서 저장_한다고 생각하면 된다. 파이썬의 인덱싱 방법들을 이용해서 여러가지 값들을 도출할 수 있다.
a[0] # s
a[1] # t
a[1:2] # tr
a[-3:] # ing
a[-3:4] # i
a[-4:4] # ri
### 딕셔너리(dict)
이름에서 유추할 수 있듯이 사전처럼 저장하는 방식의 자료형이다. key
와 value
라는 값이 존재한다. key
는 말그대로 사전에서 단어라고 보면되고 value
는 그 단어를 설명하는 내용들을 담은 값이라고 생각하면 될 것 같다.
my_dict = {
123: 456,
"my_key": 1000
}
# 다만 이런식으로 생성할 경우 key 값에 int형, float형이 오면 안된다. 왜냐하면, 함수를 호출하는 형태로 작동하기 때문에 이부분에서는 어쩔 수 없다.
my_dcit = dict(123=456, my_key=1000) # error
#### 메모리에 저장되는 방식
딕셔너리라는 이름은 파이썬에서만 사용하는 네이밍이다. 원래는 hash table
이라는 이름을 가지고 있는 자료형이다. hashtable
은 내부에 해쉬 알고리즘을 통해 저장하기 때문에 hashtable에서 key값에 대한 수정/추출과 같은 과정에서 O(1)
의 시간 복잡도 밖에 걸리지 않는다. 그러므로 해당 특성을 이해하고 적재적소에 사용하는 것이 좋다.
my_dict["my_key"] = 2000 # 1000 -> 2000으로 수정된다
### 집합(set)
내부적으로 Hash를 사용하고, Hash는 uniqueness가 보장되기 때문에 다음과 같은 특징을 갖을 수 있다.
a = {1, 2, 3, 1}
a # {1, 2, 3} 출력
my_list = {1, 2, 3, 4, 4}
set(my_list) # {1, 2, 3, 4} set으로 변환해주는 함수를 사용해 list->set으로의 변환
중복된 값이 없다는 것이 집합의 큰 특징이다. 이를 이용해 _데이터셋 간의 비교(교집합, 합집합, 차집합 등)과 빠른 find operation을 활용_하기 위해 쓰입니다.
list, dict, set과 같이 1개 이상의 데이터를 담고 있는 자료형을 iterable한 자료형이라고 한다.
불(bool, boolean)
bool
은 True
or False
를 가지는 자료형입니다. 파이썬은 &&
, ||
, !
을 사용하지 않고 대신에 and
, or
, not
을 사용한다는 특징이 있습니다.
True and False # False
True and True # True
True or False # True
not True or False # False
a = 0
a = a < 1 # a에는 1이 저장됨. True == 1
a != 3 # True, 1 != 3 이므로 True
'프로그래밍 > Python' 카테고리의 다른 글
#3-1 파이썬 pandas 초급 강의(수정 필요) (0) | 2022.02.15 |
---|---|
#2 본격적인 파이썬 공부를 위한 계획표(2022/02/09) (0) | 2022.02.09 |
#1-4 파이썬 초급 강의 - 예외 처리(try/exception) (0) | 2022.02.07 |
#1-3 Python 초급 강의 - 클래스(class) (0) | 2022.02.04 |
#1-2 Python 초급강의 - 함수편 (0) | 2022.02.03 |