파이썬과 코딩테스트

Myeongsu Moon·2025년 2월 11일
0

제로베이스

목록 보기
86/95
post-thumbnail

파이썬 주요 문법

for문

  • range를 이용한 for문과 인덱싱
a = [1,2,3,4,5,6,7,8,9,10]
for i in range(len(a)):
	print(a[i])
  • 반복자를 이용한 for문
a = [1,2,3,4,5,6,7,8,9,10]
for elem in a:
	print(elem)
  • enumerate를 이용한 인덱싱 + 반복자
a = [1,2,3,4,5,6,7,8,9,10]
for i, elem in enumerate(a):
	print(f'a[{i}] = {elem}')
  • zip을 이용한 여러 반복자 동시 반복
a = [1,2,3,4,5,6,7,8,9,10]
b = [10,9,8,7,6,5,4,3,2,1]
for e1, e2 in aip(a,b):
	print(f'{e1}, {e2}')

함수의 구현

  • 기본적인 함수 정의
def solution(x,y):
	return x + y

지능형 리스트(List comprehension)

  • for문에 비해 빠르게 동작하는 장점이 있음
    -> for문과 append(가장 나쁜 방법)
a=[]
for i in range(10):
	a.append(i)

-> Pre-allocation(조금 나은 방법)

a=[0]*10
for i in range(10):
	a[i] = i

-> List comprehension(가장 좋은 방법)

a = [x for x in range(10)]
  • Generator: 미리 값을 만들지 않으므로 메모리를 적게 씀
a = (x for x in range(100000))
  • Dictionary comprehension: 딕셔너리도 지능형 리스트처럼
a = {key:key**2 for key in range(10)}

람다 표현식(Lambda expression)

  • 함수 프로그래밍을 하기 위한 핵심 문법
print((lambda x: x**2(10))

조건 표현식(Conditional expression)

  • if문 사용을 줄이는 핵심 문법
b = 20
a = 1 if b >0 else -1

많이 쓰이는 함수 프로그래밍

  • map 함수
a = [x for x in range(10)]
a = list(map(lambda x: x**10, a))
  • filter 함수
a = [x for x in range(100)]
a = list(filter(lambda x: x % 2, a))
  • reduce 함수
from functools import reduce
a = [x for x in range(100)]
a = reduce(lambda x, y: x + y, a, 0)

클래스 구현

class Foo:
	cls_var = 10 # 클래스 멤버 벼눗
    
    def __init__(self, x):
    	self.x = x
     
    def method(self, y):
    	return self.x + y
        
    @classmethod
    def cls_method(cls, z):
    	return cls.cls_var + z
        
    @staticmethod
    def static_method(k):
    	return k

좋은 습관/나쁜 습관

좋은 습관

  • 변수 명을 정할 때 의미가 있는 이름으로 결정
  • 변수, 클래스 명은 컨벤션을 지켜서 일정하게 구현
  • PEP-8을 지켜서 가독성 좋은 코드 작성
  • map, filter, reduce등을 이용하여 함수형 프로그래밍을 적절하게 채용

나쁜 습관

  • C언어처럼 구현하는 습관(항상 for문으로 모든 것을 처리): Python은 for문으로 처리할 경우 속도가 느리고 코드의 가독성이 떨어짐
  • 신기한 코드: 나만 알아볼 수 있는 신기한 코드는 적절하지 않음
  • 무조건 짧은 코드: Short code 자체도 의미는 있으나, 일반적으로는 사용하지 않음
  • 무조건 내가 구현: 기본 파이썬 라이브러리에 구현된 것은 import 해서 쓰는 편이 좋음
  • 무조건 최적화: 최적화, 가독성 사이에 trade-off 관계가 있을 경우, 상황에 맞게 결정

이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다

0개의 댓글