=100 a
자료형
-
파이썬의 기본자료형은 int, float, bool, str, list, tuple, dict, set 등이 있다.
- 0차원 자료형: int, float, bool
- 1차원 자료형: str, list, tuple, dict, set
0차원
-
int형
type(a)
int
-
float형
a?
=1.2*3 a
type(a)
float
-
bool형
=True # 숫자1
a=False # 숫자0 b
type(a)
bool
# bool형의 연산
+b a
1
-
complex형
=1+2j
a=2-2j b
a
(1+2j)
type(a)
complex
+b a
(3+0j)
type(a+b)
complex
-
형태변환: float -> int
=3.0
atype(a)
float
=int(a) a
a?
=3.14
aint(a)
# 0.14날라가고 3만나옴. 정보의 손실이 있다.
3
-
형태변환: int $$ float
=3
atype(a)
int
=float(a)
atype(a)
float
-
형태변환: bool $$ int/float
(예시1)
=True
atype(a)
bool
int(a)
1
float(a)
1.0
(예시2)
=1
abool(a)
True
(예시3)
=1.0
abool(a)
True
=0.0
abool(a)
False
-
이상한 형태변환도 가능하다
bool(-3.14)
True
bool(3.14)
True
bool(0)
False
bool(3.24342)
True
# 위와 같은 코드를 의도적으로 사용하진 않는다.
-
형태변환이 항상 가능한 것도 아님
float(3+0j) # 사실상 3+0j= 3이므로 float으로 형변환하면 3.0이 되어야 할 것 같은데 오류가 남
TypeError: can't convert complex to float
-
암묵적형변환 (implicit)
(예비학습) implicit의 의미 - 추운날씨 -> 보일러좀 틀자! 명시적(explicit) / 오늘 날씨가 좀 춥지 않아? (implicit) - 짜장면 먹을래? -> 싫어 (explicit) / 난 어제 짜장면 먹었는데… (implicit)
int(True) #명시적
1
True * 1 # 암묵적형
1
1 * 1.0
1.0
True+True
2
1차원
-
str
# 선언
='br' a
a
'br'
# 연산
# 더하기 연산
='x'
a='2' b
+b a
'x2'
# 빼기 연산 없다.
-b a
TypeError: unsupported operand type(s) for -: 'str' and 'str'
# 곱하기 연산
*2 a
'xx'
2*a
'xx'
# 의미상 맞지 않는 것은 수행되지 않는다.
='x'
a='y'
b+b a
'xy'
*b a
TypeError: can't multiply sequence by non-int of type 'str'
# 나눗셈연산은 없다.
='xx'
a/2 a
TypeError: unsupported operand type(s) for /: 'str' and 'int'
인덱싱
-
str은 하나의 벡터 문자가 여러개 있는 형태라고 생각하기
='boram'
a a
'boram'
- 5개의 칸에 글씨가 하나씩 들어가 있음
0] # 0이 첫번쨰 원소 a[
'b'
1] # 두번째 원소 a[
'o'
# 마지막 원소를 호출하려면 -1로 호출할 수도 있다.
-1] a[
'm'
4] a[
'm'
-2]
a[# 마지막에서 2번째 원소는 -2로 호출 가능
'a'
- 어려개의 원소는
:
을 이용하여 호출할 수 있음
0:3] # a[0], a[1], a[2]까지만 뽑힌다. a[3]은 호출되지 않는다. a[
'bor'
1:3] a[
'or'
- index=1부터 시작해서 마지막 원소까지 호출하려면?
5] a[
IndexError: string index out of range
1:5] # a[5]는 없는데,, 이렇게 쓰니까 헷갈릴 수 있다. a[
'oram'
1:-1] # 이것은 a[1:4] 와 같음 a[
'ora'
# 해결책! 생략한다.
1:] a[
'oram'
-
생략의 응용1
='k-pop'
a a
'k-pop'
2:] a[
'pop'
2:5] a[
'pop'
-
생략의 응용2
='k-pop'
a a
'k-pop'
0:2] a[
'k-'
2] # 앞을 생략하면 첫 원소부터 나온다. a[:
'k-'
-
생략의 응용3
='k-pop'
a a
'k-pop'
a[:]
'k-pop'
0:5] a[
'k-pop'
str특수기능
-
파이썬의 변수는 단순히 정보를 담는 그릇이 아니다. 유용한 기능을 제공하는 경우가 있다.
='ABCD' #a라는 변수는 'ABCD'라는 정보를 담는 그릇의 역할만 하지 않고, 특화된 어떠한 기능도 제공한다.
a a
'ABCD'
#소문자변환 a.lower()
'abcd'
# lower()는 문자열에 특화된 기능이며 아래 내용은 안됨
=3.14
a a.lower()
AttributeError: 'float' object has no attribute 'lower'
-
자료형에 특화된 기능(=함수)을 확인하는 방법 a.
+ tab
으로 목록 확인 가능
='boram' a
a.lower?
# 대문자 변환
a.upper() # upper(a)
'BORAM'
a.capitalize()
'Boram'
-
마음의눈: a.f()
형태를 읽는 팁 - a.f()
는 f(a)
로 생각하면 편리함 - a.f(2)
는 f(a,2)
로 생각하면 편리함 - 이런점에서 R %>%
연산자와 비슷하다고 생각할 수 있다. (약간 다름)
-
사실 .
은 좀 더 다양한 상황에서 쓰일 수 있다. 변수이름.함수이름()
의 형태가 아니라 - 패키지이름.함수이름()
- 패키지이름.변수이름
- 패키지이름.패키지이름.함수이름()
… 와 같이 다양한 형태가 가능하다. 근본적인 고통점은 .
을 기준으로 상위개념.하위개념
으로 이해하는 것이 좋다.
0차원 vs 1차원
-
len 함수 : 원소의 갯수를 알려주는 함수
(0차원) len함수가 동작하지 않는다.
=3.14
alen(a)
TypeError: object of type 'float' has no len()
=True
blen(b)
TypeError: object of type 'bool' has no len()
(1차원) len함수가 잘 동작함
='3.14'
alen(a)
4
=[1,2,3]
blen(b)
3
숙제
='BoramKim'
a a
'BoramKim'
5] a[:
'Boram'
5:] a[
'Kim'