4장 코딩테스트에 필요한 필수 문법
빌트인 데이터 타입
파이썬의 데이터 타입은 다음과 같다.
빌트인 데이터 타입 | 언저 자체에서 제공하는 데이터 타입(정수형, 부동소수형, 문자열 타입) |
컬렉션 데이터 타입(리스트, 튜플, 셋, 딕셔너리) |
정수형 산술 연산에서 헷갈리는 부분만 코드를 통해 기술하였다.
a = 13
b = 4
print(a / b) # 나누기 (소수점 포함) 3.25
print(a // b) # 나누기 (소수점 제외) 3
print(a % b) # 모듈러 연산 (나머지) 1
print(-a) # 부호를 바꿈 -13
print(abs(-a))# 절대값 13
print(a**b) # a의 b승 28561
정수형 비트 연산 정리는 코드를 통해 기술하였다.
print(a & b) # AND 4
print(a | b) # OR 13
print(a ^ b) # XOR 9
print(~a) # NOT -14
print(a << 2) # 왼쪽 시프트 (a에 2^2를 곱한 것과 동일) 52
print(a >> 1) # 오른쪽 시프트 (a를 2^1로 나눈 것과 동일) 6
정수형 논리 연산 정리는 코드를 통해 기술하였다.
print(a and b) # 논리 연산 AND 4
print(a or b) # 논리 연산 OR 13
print(not a) # 논리 연산 NOT False
부동소수형 데이터를 다룰 일이 생겼을 때 엡실론을 항상 생각해야 한다.
- 앱실론이란? 파이썬 부동소수형 데이터를 이진법으로 표현하기 때문에 표현 과정에서 발생하는 오차를 말한다.
컬렉션 데이터 타입에서 컬렉션은 여러 값을 담는 데이터 타입을 말한다.
대표적으로 리스트, 튜플, 딕셔너리, 셋, 문자열 등이 있다.
여기서 데이터 수정 여부에 따라 뮤터블객체(변경할 수 있는 객체), 이뮤터블객체(변경할 수 없는 객체)로 구분할 수 있다.
뮤터블 객체(변경할 수 있는 객체) | 리스트, 딕셔너리, 셋 |
이뮤터블 객체(변경할 수 없는 객체) | 정수, 부동소수점, 문자열, 튜플 |
뮤터블 객체의 리스트는 사용 방법은 5장 배열의 코드를 통해 기술하였다.
인덱싱은 인덱스를 활용해 특정 위치의 원소에 접근하는 것을 말한다.
리스트 슬라이싱 방법은 코드를 통해 기술하였다.
tmp_list = [1, 2, 3, 4, 5]
print(tmp_list[0:2]) # [1,2]
print(tmp_list[1:]) # [2, 3, 4, 5]
print(tmp_list[3:4]) # [4]
print(tmp_list[-4:-2]) # [2, 3]
딕셔너리에 대한 정리는 코드를 통해 기술하였다.
# 딕셔너리 선언
tmp_dict = { }
# 딕셔너리 값 삽입
tmp_dict["mouse"] = 1
tmp_dict["keyboard"] = 2
tmp_dict["monitor"] = 3
# 딕셔너리 값 출력
print(tmp_dict) # {'mouse': 1, 'keyboard': 2, 'monitor': 3}
# 딕셔너리 값 검색
key = "mouse"
if key in tmp_dict:
value = tmp_dict[key]
print(f"{key}: {value}") # mouse: 1
else:
print(f"{key}는 딕셔너리에 존재하지 않음")
# 딕셔너리 값 삭제
del tmp_dict["mouse"]
print(tmp_dict) # {'keyboard': 2, 'monitor': 3}
튜플에 대한 정리는 코드를 통해 기술하였다.
리스트, 딕셔너리와 달리 한 번 생성하면 삽입하거나 삭제할 수 없다.
# 튜플 초기화
tmp_tuple = (1, 2, 3)
# 튜플 인덱싱, 슬라이싱
# 문법 자체는 리스트와 같다.
# 인덱싱
python(tmp_tuple[0]) # 1
python(tmp_tuple[1]) # 2
python(tmp_tuple[2]) # 3
# 슬라이싱
python(tmp_tuple[1:]) # (2, 3)
python(tmp_tuple[:2]) # (1, 2)
python(tmp_tuple[1:2]) # (2,)
리스트도 있는데 굳이 튜플을 쓰는 이유는 실수로 값을 변경하는 실수를 방지하기 위함이다.
문자열에 대한 정리는 코드를 통해 기술하였다.
# 문자열 추가
string = "h"
string += "i"
print(string). # "hi"
# 문자열 수정
string = "hii"
string = string.replace("ii", "") # "i"를 모두 삭제
print(string) # H
함수의 람다식에 대한 정리는 코드를 통해 기술하였다.
lambda x, y : x + y # x와 y를 받아서 더한 값을 반환하는 람다식
# 람다를 이용한 간단한 함수 정의
add = lambda x, y: x + y
print(add(5, 4)) # 9
num = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, num))
print(squares) # [1, 4, 9, 16, 25]
코딩 테스트 구현 노하우는 3가지이다.
조기반환은 코드 실행 과정에 있어서 함수 끝까지 가기전에 반환하는 기법이다. 이를 통해 코드의 가독성을 높이고 예외를 깔끔하고 빠르게 처리할 수 있다. 조기반환에 대한 정리는 코드를 통해 기술하였다.
def total_price(quantity, price):
total = quantity * price
if total > 100:
return total * 0.9
# 이렇게하면 이후 예외에 대한 처리를 하지 않아도 된다.
return total
print(total_price(4, 50))
보호구문은 본격적인 로직을 진행하기 전 예외 처리 코드를 추가하는 기법임.
예를 들어 조건문을 사용해 초기 입력값이 유효한지 검사하고, 그렇지 않으면 바로 함수를 종료하는 보호 구문을 쓸 수 있음
def calculate_average(numbers):
if numbers is None:
return None
if not isinstance(numbers, list): # numbers가 리스트가 아니면 종료(예외)
return None
if len(numbers) == 0: # numbers의 길이가 0이면 종료(예외)
return None
total = sum(numbers)
average = total / len(numbers)
return average
합성함수는 2개 이상의 함수를 활용해 함수를 추가로 만드는 기법임
이는 람다식을 활용하여 구현한다.
def add_three(x):
return x + 3
def square(x):
return x * x
composed_function = lambda x: square(add_three(x))
print(composed_function(3)) # 36
'Python' 카테고리의 다른 글
[5주차]9장 이진트리 (0) | 2024.03.21 |
---|---|
[4주차]8장 해시 (0) | 2024.01.30 |
[3주차]7장 큐 (0) | 2024.01.30 |
[3주차]6장 스택 (0) | 2024.01.30 |
[2주차]5장 배열 (0) | 2024.01.30 |