Python - 알고리즘 기초

Minhyeok Kim·2023년 6월 16일
0

Python

목록 보기
8/12
post-thumbnail
  • 파이썬으로 알고리즘 문제를 풀기위한 기초 → 파이썬으로 코딩을 하기위한 기초로 생각해도 좋다. 알고리즘을 구현하고 어떤 문제에 대한 솔루션을 만들기 위한 언어로 선택했다면 그 언어의 문법은 확실하게 알아야 하기 때문이다.

인덴트(들여쓰기)

파이썬의 대표적인 특징이기도 한 인덴트는 공식 가이드인 PEP 8에 따라 공백 4칸을 원칙으로 한다. 파이썬에선 코드 구분을 위한 중괄호가 없기 때문에 이 들여쓰기로 구문을 구분하게 되니 반드시 잘 숙지해야 한다.

class ParentClass:
    def __init__(self):
# 들여쓰기
        self.name = 'parent'
        self.number = 10
# 들여쓰기
    def __str__(self):
        return f'ParentClass name : {self.name}, number : {self.number}'
# 들여쓰기
    def add_num(self, new_number):
        print('부모 : ', new_number, '만큼 더해야지')
        self.number = self.number + new_number
# 들여쓰기
    def minus_num(self, new_number):
        print('부모 : ', new_number, '만큼 빼야지')
        self.number = self.number - new_number
# 들여쓰기
    def multiple_num(self, new_number):
        print('아낌없이 주는 부모 : 자식아 넌 곱하기 함수 없지? 괜찮아 내가 줄게')
        self.number = self.number * new_number

네이밍 컨벤션

파이썬은 변수명을 스네이크 케이스를 따라 작성한다.

long_name_function

타입 힌트

파이썬은 동적 언어임에도 타입을 지정할 수 있는 타입 힌트가 PEP 484 문서에서 추가되었다. 자바스크립트를 아울러 타입까지 지정할 수 있는 타입스크립트가 영향력을 키워가는 만큼 코드의 가독성과 버그 유발의 주범을 잡기위한 보강책으로 보여진다.

a : int = 1 b : str = “1”

리스트 컴프리헨션

직관적으로 리스트를 생성하는 방법이다.

# 기본 출력 방법
li = []
for i in range(5):
    li.append(i)
# print(li)
# [0, 1, 2, 3, 4]

# 리스트 컴프리헨션
li2 = [i for i in range(5)]
print(li2)
# [0, 1, 2, 3, 4]

li3 = list(range(5))
print(li3)
# [0, 1, 2, 3, 4]

# 딕셔너리에서 리스트 컴프리헨션
original = {'key1':'value1'}
a = {}
for key, value in original.items():
    a[key] = value

# 다음과 같이 리스트 컴프리헨션으로 표현 가능
original = {'key1':'value1'}
a = {key: value for key, value in original.items()}

제너레이터

루프의 반복 동작을 제어할 수 있는 루틴 형태이다. 반복을 필요할 때만 불러서 실행하니 점유하는 메모리 공간이 제너레이터가 없을 경우에 대비하여 현저히 적다.

대표적인 제너레이터 = range()

import sys

a = [n for n in range(1000000)]
b = range(1000000)

print(len(a))
# 1000000
print(len(b))
# 1000000
print(len(a) == len(b))
# Ture
print(sys.getsizeof(a))
# 8448728
print(sys.getsizeof(b))
# 48

enumerate

순서가 있는 자료형을 인덱스를 포함한 enumerate 객체로 리턴한다. → 인덱스와 함께 출력 된다.

a = [1, 2, 3, 453, 121, 23]
enumerate(a)
print(list(enumerate(a)))
# [(0, 1), (1, 2), (2, 3), (3, 453), (4, 121), (5, 23)]

for i in range(len(a)):
    print(i, a[i])
# 0 1
# 1 2
# 2 3
# 3 453
# 4 121
# 5 23

나눗셈 연산자

파이썬 2 이하에서는 기본 나눗셈 연산자는 타입을 유지하는 특성때문에 정수만 반환했는데 파이썬 3 부터는 정수형을 유지한다.

추가로 // 연산자가 추가되어 기존에 있던 나눗셈 연산자의 기능을 사용할 수 있게 두었다.

print(5 / 3)
print(5 // 3)
print(type(5 // 3))
print(type(5 / 3))
# 1.6666666666666667
# 1
# <class 'int'>
# <class 'float'>

# 나머지만 구하는 연산자
print(5 % 3)
# 2

# 몫과 나머지를 한 번에 구하는 연산자
print(divmod(5, 3))
# (1, 2)

0개의 댓글