놀랍게도 파이썬도 객체지향 언어이다
프로그래밍에서 변수 = 값을 저장하는 장소 (변수 = 값 : 변수에 값을 넣어라)
변수는 메모리의 주소를 가지고 있음 (메모리에 들어가 있음) ex) 0x0006
변수에 들어가는 값은 메모리 주소에 할당된다
선언이 되는 순간 물리적인 공간이 할당된다
cpu (제어장치 + 산술논리 장치)
기본자료형
-정수형 integer 32bit -> 4byte
-실수형 float 64bit
-문자형 string
-논리형 boolean
=> 파이썬은 코드 실행시점에 데이터의 Type을 결정하는 "Dynamic Typing" 이다
"float 에서 주의점은 computer는 실수를 이진수로 저장하기에 무한소수가 된다"
(프로그래밍 할때 오차 발생의 가능성을 염두해야 한다)
LIST
list의 특징
1. indexing -> list에 있는 값들은 주소(offset)을 가짐
2. slicing -> list의 값들을 잘라서 쓴다 (범위 넘어갈 경우 자동으로 최대 범위를 지정)
[시작idx, 끝 idx, step]
ex) cities[0:5] -> cities의 번수 0~5, cities[::2] -> 2칸씩 슬라이싱, cities[::-1] -> 역으로 슬라이싱
ex) cities[-3:] <-이건 뭐냐면 반대로 가는 거임 (끝이 -1 이니깐) -3, -2, -1
3. 리스트 연산
(+ , *: concatenation)
4. 추가 & 삭제
리스트명.append("내용") : 맨 뒤에 붙이는 거
리스트명.extend(리스트) : concatenation 과 비슷한데 내부 연산이 다름 & 따로 결과 저장 필요 x (inline)
리스트명.remove(원소) : 원소를 삭제
del 리스트명[지울 idx] : 해당 idx의 원소를 삭제
ex) lst = [1,2,3]
lst.extend([a,b,c]) -> lst = [1,2,3,a,b,c]
5. 메모리 저장 방식
->파이썬은 다양한 데이터타입이 하나의 리스트에 들어 갈 수 있다
-> 기본적으로 주소를 가지고 논다.
ex) a = [5,4,3,2,1]
b=a <- a와 b를 포인터라고 생각
a.sort() <- b도 변화한다
그러므로 이걸 따로 하고 싶으면 b= [5,4,3,2,1]이라고 재할당 해야한다
또는 b = a[:] 이런식으로 해야한다 (a=b는 포인터를 복사하는거야)
6. 패킹과 언패킹
ex) lst = [1,2,3]
a,b,c = lst #언패킹
a -> 1 b-> 2 c -> 3
7. 이차원 리스트
[[1,2,3],[a,b,c],[10,20,30],['가','나','다']]
*주의점*
2차원 이상에서 부터는
copy_lst = my_lst[:]
이 방식으로 Deep-copy 할 수 없다
그러므로
import copy
copy_lst = copy.deepcopy(my_lst)
이런 식으로 진행해야 한다
하지만 위에 보단
lst = [[1,2],[3,4],[5,6]]
cpy_lst = [itm[:] for itm in lst ]
이걸 암기하기
sorted(리스트명)
->리스트를 오름차순으로 정렬을 된걸 'return'해준다
->parameter의 리스트에는 영향 x
리스트명.sort()
->리스트자체를 오름차순으로 정렬
-> return 값이 없다
'Python > Basic' 카테고리의 다른 글
Python Decorator 에 관하여 (0) | 2023.04.04 |
---|---|
[AI for Python] 행렬의 곱셈 정리 (0) | 2022.10.04 |
[Python Basic] Python 에 수식표현(Sympy) (0) | 2022.10.03 |
[Python Basic]조건문과 반복문 (0) | 2022.09.23 |
[Python Basic]Function and print function formatting (0) | 2022.09.23 |