Data Types : 값의 종류와 그 값에 적용 가능한 연산과 동작을 결정하는 속성
<진수 표현>
print(0b10) # 2
print(0030) # 24
print(0x10) # 16
#진법 변경
print(bin(12)) # 0b1100
print(oct(12)) # 0o14
print(hex(12)) # 0xc
<유한 정밀도>
print(2 / 3) # 0.6666666666666666
print(5 / 3) # 1.6666666666666667
<실수 연산 시 주의사항>
<Floating point rounding error 해결책>
a = 3.2 - 3.1 # 0.10000000000000009
b = 1.2 - 1.1 # 0.09999999999999987
# 1. 임의의 작은 수 활용
print(abs(a - b) <= 1e-10) # True
# 2. math 모듈 활용 (더 정확)
import math
print(math.isclose(a, b)) # True
<지수 표현 방식>
number = 314e-2 # 314 * 0.01 (e-2 : 10의 -2제곱. e 의미 : 제곱 표현을 하겠다.)
print(type(number)) # float
print(number) # 3.14
print(314e2) # 31400.0
문자들의 순서가 있는 변경 불가능한 시퀀스 자료형 (불변형 자료형)
표현 방법
중첩 따옴표
작은 따옴표가 들어 있는 경우 : 큰 따옴표로 문자열 생성
큰 따옴표가 들어 있는 경우 : 작은 따옴표로 문자열 생성
print("문자열 안에 '작은 따옴표'를 사용하려면 큰 따옴표로 묶는다.")
print('문자열 안에 "큰 따옴표"를 사용하려면 작은 따옴푤로 묶는다.')
Escape sequence
역슬래시(backslash) 뒤에 특정 문자가 와서 특수한 기능을 하는 문자 조합
파이썬의 일반적인 문법 규칙을 잠시 탈출한다는 의미
| 예약 문자 | 내용 (의미) |
|---|---|
| \n | 줄 바꿈 |
| \t | 탭 |
| \ | 백슬래시 |
| \’ | 작은 따옴표 |
| \” | 큰 따옴표 |
String Interpolation : 문자열 내에 변수나 표현식을 삽입하는 방법
f-string : 문자열에 f 또는 F 접두어를 붙이고 표현식을 {expression}로 작성하여 문자열에 파이썬 표현식의 값을 삽입할 수 있음
bugs = 'roaches'
counts = 13
area = 'living room'
#Debugging roaches 13 living room
print(f'Debugging {bugs} {counts} {area}')
#f-string 응용
greeting = 'hi'
print(f'{greeting:^10}')
print(f'{greeting:>10}')
print(f'{3.141592:.4f}') #앞의 실수를 소수점 4자리까지 출력 (3.1416)
str.format : f-string 이전 사용했던 문법
#Debugging roaches 13 living room
print('Debugging {} {} {}'.format(bugs, counts, area))
% operator : formatting 이전 사용했던 문법
#Debugging roaches 13 living room
print('Debugging %s %d %s' %(bugs, counts, area))
slicing
기본 형태 lst[start:end:step]
특정 시작 위치부터 끝까지 (end 값 생략)
my_str = "hello"
print(my_str[3:]) # lo
처음 부터 특정 위치까지 (start 값 생략)
my_str = "hello"
print(my_str[:3]) # hel
print(my_str[::-1]) # olleh (문자열 뒤집기)
중간 부분 가져오기
my_str = "hello"
print(my_str[2:4]) # ll
step 활용
my_str = "hello"
print(my_str[0:5:2]) # hlo
my_str = 'hello'
my_str[1] = 'z' # TypeError : 'str' object does not support item assignment
여러개의 값들을 순서대로 나열하여 저장하는 자료형
<특징>
my_tuple = (1, 'a', 3, 'b', 5)
my_tuple[1] = 'z' # TypeError : 'tuple object does not support item assignment
x, y = (10, 20)
print(x) # 10
print(y) # 20
# 파이썬은 쉼표를 튜플 생성자로 사용하므로 괄호는 생략 가능
x, y = 10, 20
range(MAX)range(10) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9range(MIN, MAX)range(MIN, MAX, GAP)range(0, 10, 2) # 0, 2, 4, 6, 8my_range_1 = range(5)
my_range_2 = range(1, 10)
print(list(my_range_1)) # [0, 1, 2, 3, 4]
print(list(my_range_2)) # [1, 2, 3, 4, 5, 6, 6, 7, 8, 9]
my_dict_1 = {}
my_dict_2 = {'key' : 'value'}
my_dict_3 = {'apple' : 12, 'list' : [1, 2, 3]}
print(my_dict_1) # {}
print(my_dict_2) # {'key' : 'value'}
print(my_dict_3) # {'apple' : 12, 'list' : [1, 2, 3]}
print(my_dict_3['apple']) # 12
print(my_dict_3['list']) # [1, 2, 3]
# 값 변경
my_dict_3['apple'] = 100
print(my_dict_3) # {'apple' : 100, 'list' : [1, 2, 3]}
my_set_1 = set() # 빈 자료형을 나타낼 때는 set() 형태로 작성. 빈 중괄호로 나타낼 경우 dict와 혼동 우려
my_set_2 = {1, 2, 3}
my_set_3 = {1, 1, 1}
print(my_set_1) # set()
print(my_set_2) # {1, 2, 3}
print(my_set_3) # {1}
my_set_1 = {1, 2, 3}
my_set_2 = {3, 6, 9}
# 합집합
print(my_set_1 | my_set_2) # {1, 2, 3, 6, 9}
# 차집합
print(my_set_1 - my_set_2) # {1, 2}
# 교집합
print(my_set_1 & my_set_2) # {3}
variable = None
print(variable) # None
bool_1 = True
bool_2 - False
print(bool_1) # True
print(bool_2) # False
print(3 > 1) # True
print('3' != 3) # False
여러 개의 항목 또는 요소를 담는 자료 구조
str, list, tuple, set, dict
| 컬렉션 | 변경 가능 여부 | 나열, 순서 여부 |
|---|---|---|
| str | X | O (Sequence) |
| list | O | O (Sequence) |
| tuple | X | O (Sequence) |
| set | O | X (Non-sequence) |
| dict | O (단, key는 변경 불가. value는 변경 가능) | X (Non-sequence) |
# 불변과 가변
my_str = 'hello'
# my_str[0] = 'z' # 에러 발생
my_list = [1, 2, 3]
my_list[0] = 100
print(my_list) # [100, 2, 3]




list_1 = [1, 2, 3]
list_2 = list_1 # list_1의 "메모리 주소"를 list_2에 할당 (값을 할당 X)
list_1[0] = 100
print(list_1) # [100, 2, 3]
print(list_2) # [100, 2, 3]x = 10
y = x
x = 20
print(x)
print(y)파이썬이 자동으로 형 변환을 하는 것
# 범위가 더 넓은 쪽으로 변환됨. int 보다 float 범위가 넓으므로 float 형태로 변환
print(3 + 5.0) # 8.0
# True = 1, False = 0
print(True + 3) # 4
print(True + False) # 1
개발자가 직접 형 변환을 하는 것. 암시적 형 변환이 아닌 경우를 모두 포함
항상 좋은 글 감사합니다.