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, 9
range(MIN, MAX)
range(MIN, MAX, GAP)
range(0, 10, 2) # 0, 2, 4, 6, 8
my_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
개발자가 직접 형 변환을 하는 것. 암시적 형 변환이 아닌 경우를 모두 포함
항상 좋은 글 감사합니다.