note title

빌트인 데이터 타입

파이썬을 쓰긴 하지만 모르는 빌트인 데이터 타입들이 있다. 분명 이미 아는 것들도 있지만 다시 한 번(?) 보고, 모르는건 외워두자.

정수형

정수형은 사칙 연산 외 많은 연산들이 있다. 집합도 되고 등등 많다

정수형 변수 선언

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))




참고자료

※ 이 글은 『코딩테스트 합격자되기』 책을 기반으로, 다양한 자료를 참고해 작성했습니다.