빌트인 데이터 타입
파이썬을 쓰긴 하지만 모르는 빌트인 데이터 타입들이 있다. 분명 이미 아는 것들도 있지만 다시 한 번(?) 보고, 모르는건 외워두자.
정수형
정수형은 사칙 연산 외 많은 연산들이 있다. 집합도 되고 등등 많다
정수형 변수 선언
a = 13
b = 4
정수형 산술 연산
a + b # 더하기
a - b # 빼기
a * b # 곱하기
a / b # 나누기
a // b # 나누기 (몫)
a % b # 모듈러 연산 (나머지)
-a # 부호바꿈
abs(-a) # 절대값
a ** b # a의 b승
정수형 비교 연산
a == b # 같은 값인지 비교
a != b # 같지 않은지 비교
a > b # 왼쪽 값이 더 큰지
a < b # 왼쪽 값이 더 작은지
a >= b # 왼쪽 값이 더 크거나 같은지
a <= b # 왼쪽 값이 더 작거나 같은지
정수형 비트 연산
a & b # AND / 4
a | b # OR / 13
a ^ b # XOR / 9
~a # NOT / -14
a << 2 # 왼쪽 시프트 (a에 2^2를 곱한 것과 동일) / 52
a >> 1 # 오른쪽 시프트 (a를 2^1로 나눈 것과 동일) / 6
정수형 논리 연산
a and b # AND /4
a or b # OR / 13
not a # 논리 연산 NOT
부동 소수형
소수를 저장할 때 사용한다.
사칙연산
2.5 + 3.7 # 더하기
7.9 - 4.2 # 빼기
1.5 * 4.8 # 곱하기
10.0 / 3.2 # 나누기
정수형 나누기, 모듈러, 제곱
10.0 // 3.2 # 몫 / 3
10.0 % 3.2 # 나머지 / 0.39999..
2.0 ** 3.2 # 제곱 연산 / 9.185..
논리연산
x = 0.5
y = 1.2
z = 2.0
print(x > y and y < z) # AND 연산/false
print(x < y or y < z) # OR 연산 /true
print(not (x > y)) # NOT 연산 / true
부동소수형을 가지고 연산을 진행 할 때는 앱실론을 포함하기에
연산에 주의해야 한다.
import sys
print(sys.float_info.epsilon)
a = 0.1 + 0.1 + 0.1
b = 0.3
print(a-b) # 5.551115123125783e-17
if abs(a-b) < sys.float_info.epsilon:
print("a==b")
else:
print("a!=b)
컬렉션 데이터 타입
컬렉션은 리스트, 튜플, 딕셔너리 등등이 있으며 가변객체/불변객체가 있다
뮤터블객체
객체를 수정할 수 있는, 리스트, 튜플, 딕셔너리가 포함된다.
my_list = [1,2,3,4,5]
my_list[4] = 6
이뮤터블객체
객체를 수정할 수 없는 정수, 부동소수점, 문자열, 튜플 등이 포함된다.
a = 4
b = a
b += 2
리스트
my_list = [1,2,3,4,5]
my_list2 = [1,3,5] + [7,9]
my_list3 = list(my_list)
리스트 인덱싱
my_list = [1,2,4]
my_list.append(6) # [1,2,4,6]
del my_list[2] # [1,2,6]
리스트 슬라이싱
mylist = [1,2,3,4,5]
mylist[:2] # [1,2]
mylist[1:] # [2,3,4,5]
mylist[3:4] # [4]
mylist[-4:-2] # [2,3]
리스트 컴프리헨션
numbers = [x for x in range(5)]
cartesian_product = [(x,y) for x in range(2) for y in range(3)]
print(cartesian_product) # [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)]
# 함수 포함
def square(x):
return x * x
squares = [square(x) for x in range(5)]
squares = list(map(lambda x: x * x, range(5)))
# 조건문
even_numbers = [x for x in range(5) if x % 2==0]
numbers = [x if x % 2 == 0 else -x for in range(5)]
딕셔너리
key와 value가 쌍으로 이루어져 있는 해시 테이블 자료구조
초기화
mydict = {}
삽입과 출력
mydict["apple"] = 1
mydict["banana"] = 2
mydict["orange"] = 3
검색
key = "apple"
if key in mydict:
value = mydict[key]
else:
print(f"{key} not in dict)
수정
mydict["banana"] = 4
삭제
del mydict["orange"]
SET
해시 테이블 기반 자료형. 원소 중복을 허용하지 않는 특징
# 초기화
empty_set = set()
# list to set
list_to_set = set([1,2,3])
# 중괄호 활용
set_from_braces = {12, 14, 1, 7}
# 문자열 셋
string_to_set = set("hello") # ('h', 'e', 'l', 'o')
# 튜플 셋
tuple_to_set = set( (1, 2, 3, 3))
# 셋 컴프리헨션
comprehension = {x for x in range(5) if x % 2 == 0}
원소 추가하기
# add
myset = {1,2,3}
myset.add(4)
# update
myset.update([5, 6])
원소 제거
myset = {1,2,3,4}
myset.remove(2) # {1,3,4}
# 오류없음
myset.discard(3) # {1,4}
myset.clear() # {}
합집합
set1 = {1,2,3}
set2 = {3,4,5}
set1.union(set2) # {1,2,3,4,5}
set1 |= set2 # {1,2,3,4,5}
교집합
set1.intersection(set2) # {3}
set1 &= set2 # {3}
차집합
set1.difference(set2) # {1,2}
set1 -= set2 # {1,2}
Tuple
초기화
mytuple = (1,2,3)
인덱싱, 슬라이싱
# list와 동일
함수
함수는 너무 많이 사용했으니, 잘 모르는 부분에 있어서
람다
lambda x, y = x + y # 함수 정의
# 사용법
add = lambda x, y: x + y
add(5, 4)
num = [1,2,3,4,5]
squares = list(map(lambda x : x ** 2, num))
참고자료
※ 이 글은 『코딩테스트 합격자되기』 책을 기반으로, 다양한 자료를 참고해 작성했습니다.