a = 1
(name) = (expression)
expression = 하나의 결과 값으로 축약 할 수 있는 식
파이썬은 overflow 가 없다. 왜? 숫자가 굉장히 크니까
but 단점은 애초에 메모리를 크게 잡는다. > 속도가 느려진다.
요기서 numpy가 사용되는 이유가 나온다.
max=1.7976931348623157e+308
a = a+1
가능할때는 무한대 일때만
파이썬은 근사적으로, 대충 값을 정한다.
파이썬 inf(무한대) 타입은 float
float('inf') = inf
질문
이렇게 데이터를 만드는 방식을 뭐라고 했지?
답
instance 방식으로 만드는 것
값을 만드는 방식은 2가지
1. literal
2. instance ex) float('inf') = inf
질문
숫자가 아닌것을 숫자에 포함할 수 있을까?
답
숫자가 아닌것도 float으로 만든다.
float('nan') = nan
결론
numpy 로 넘어간다.
a = b'abc'
len
<function len(obj, /)>
파이썬은 문자열을 다루기 너무 편하다.
헤테로=헤테로지니어스 (Heterogenous) : 안에 들어갈 데이터 타입이 다른 것
- [1 , '1']
호모=호모지니어스 (Homogenous) : 안에 들어갈 데이터 타입이 같은 것
- 속도가 빠르다.
- import array 는 다 호모
sequential Or non sequential
sequential 문자
non sequential 집합
set 은 내부적으로는 순서를 만들지만, 우리 눈에은 안보이는 거지
질문
순서가 있다면, indexing 할 수 있다.
여러개 뽑는건 slice
왜? 에러가 안나는거야?
list or tuple 차이는 mutable 차이
range(10)[3]
인덱싱
슬라이싱 가능하다.
실무에서 리스트 쓰면 싸대기 맞는다.
문제점이 많다.
what is mutable?
그렇다면 상수의 개념부터 정리하고 가야한다.
what is variable(변수), constant(상수)
a 는 변수가 아니다. name 이다.
파이썬에는 상수가 없다. 그러면 변수는 뭐야?
상수처럼 취급은 가능하지만, 상수는 없다.
변수는 재할당 가능하다.
a = 1
a = 2
a는 1,2 로 변할 수 있잖아? 그러면 변수
자바에서는 오류 떠유!
변수는 재할당할때 id 이 달라진다.
Mutable(변하기 쉬운) 은 id가 바뀌지 않는다.
딥러닝의 weight는 Mutable 자기 자신 값이 바뀌게 한다.
mutable 내부적으로 메모리를 공유한다.
mutable 의 특징
보면
a = [1,2,3] 일거 같지만, [1,2,3,4 ]
요렇게는, 명백하지 않기때문에 쓰지 않는다.
요렇게 해야한다.
copy 방법
얕은 복사(shallow copy)와 깊은 복사(deep copy)
함수형 패러다임에서는 Mutable이 없는 데이터 타입을 한다.
tensorflow의 기본 타입은 tensor immutable(불변) 이다.
내가 정할 수 없는 순서를 가지고 있따.
안에는 immutable 데이터만 넣을 수 있다. (tuple) but list는 불가능하다.
mutable
dict = {'a', 1} = {key , value}
key = 해시 데이터 타입
는 immutable data
질문
a = {(1,2,3):1} 될까?
답
가능하다!
연습
dict 기반으로 set 을 만들었다.
질문
data 와 value 의 차이점?
답
data = low 그자체!
value = type으로! > 그래서 이상한 타입을 본거야
그러면 타입에 따라 다양한 기능이 나온다.
식은 하나의 결과 값으로 축약이 가능하다.
그러면
연산을 알아야 한다. 연산자 알아야한다.
a = True + True
a =2
망했다 요 차이가 뭐야?
나머지 정리 알아봐야 한다.
마이너스로 나누어서 나머지가 -
플러스로 나누어서 나머지가 +
3x + a
a = 0,1,2
222
2**3
두개 속도가 다른다.
opencv 를 보면,
data type 마다 연산자 다르다! 성능다르다
질문
문자열 곱하기 가능해?
답변
이 데이터 타입에서는 이 연산자 지원하지 않는다는 의미
seq * 4 는 같다.
(1,2,3) + [2,3,4]
= 오류
집합 mutable, 리스트 immutable
정리
값은 값이여도 데이터 마다 연산자가 다르기 때문에 속도가 달라지는 거다.
3 + 3.1
int + float 인데, 변경해서 하는거
= 6.1
pandas?
coercion (코어션)
같은 형의 두 인자를 수반하는 연산이 일어나는 동안, 한 형의 인스턴스를 다른 형으로 묵시적으로 변환하는 것. 예를 들어, int(3.15)는 실수를 정수 3으로 변환합니다. 하지만, 3+4.5 에서, 각 인자는 다른 형이고 (하나는 int, 다른 하나는 float), 둘을 더하기 전에 같은 형으로 변환해야 합니다. 그렇지 않으면 TypeError를 일으킵니다. 코어션 없이는, 호환되는 형들조차도 프로그래머가 같은 형으로 정규화해주어야 합니다, 예를 들어, 그냥 3+4.5 하는 대신 float(3)+4.5.
더 큰 데이터 타입으로 변경하고 더 해준다.
옹 메모리 값이 왜 똑같이?
연산자마다 특징이있다.
파이썬은 너무 느려서 범위를 정해놓았다.
-5 ~ 256 까지는 동일한 메모리 = interning
재밌는 세상이 열린다.
정수에 없다? = 0
없는 것은 거짓이다. =
옹 신기한다, 앞이 참이니까, 에러가
반대는 틀리겠지?
^^^
|||
short circuit 테크닉
Operator overloadding 을 알게 되어야 한다.
요기보면 차이가 나네? keyword 면 두껍네
걍 help('and') 해봐 그러면 알려줄거야!