✔️ 스네이크 케이스
: 변수를 밑줄(_)로 구분하여 표기하는 방법
ex.
def calc_score(s: dict): student_score = s.score
✔️ 코딩테스트는 일반적으로 짧은 알고리즘으로 끝나는 경우가 많고, 타입은 지정하지 않아도 한눈에 보일 만큼 명확하기 때문에 굳이 지정하지 않아도 문제는 없다. 그러나 코드를 정리할 때만이라도 타입을 모두 지정해서 보기좋게 제출하려고 노력하자!
ex.
num: int = 1 s: str = 'foo'
✔️ 리스트 컴프리헨션은 가독성이 좋은 편이지만, 이 또한 무리하게 복잡하게 작성할 경우 가독성을 떨어뜨릴 수 있으므로 적절히 사용하는 게 중요하다. 대체로 표현식은 2개를 넘지 않아야 한다.
ex.
[n * 2 for n in range(1, 11) if n % 2 == 1] ## [2, 6, 10, 14, 18] {key : value for key, value in original.items()}
✔️ 루프의 반복 동작을 제어할 수 있는 형태를 말한다.
✔️ 예를들어, 숫자 1억개를 만들어내 계산하는 프로그램을 만든다고 가정했을 때 제너레이터가 없다면 숫자 1억개를 만들어서 메모리 어딘가에 항상 보관하고 있어야 한다. 그러나 제너레이터를 이용하면, 단순히 제너레이터만 생성해두고 필요할 때 불러서 숫자를 만들어내면 된다.
✔️ 요약
: 메모리 많이 안 잡아먹게 도와줄 수 있는 녀석 -> 성능향상 굳
✔️ yield
: 함수를 종료시키지 않고 값을 return 시킨다.
✔️ next
: yield를 통해 현재 함수에서 생성한 값을 받았다면, 다음 값을 받기 위해 사용한다.
ex.
yielddef get_natural_number(): n = 0 while True: n += 1 yield n ## <generator object get_natural_number at 0x10d3139d0> g = get_natural_number() for _ in range(0, 100): print(next(g)) ## 1 2 3 ... 100
range
✔️대표적인 제너레이터 함수
✔️ '열거하다'는 뜻의 함수로, 순서가 있는 자료형(list, set, tuple)을 인덱스를 포함한 enumerate 객체로 리턴한다.
ex.
a = ['lee', 'jae', 'won'] enumerate(a) ## [(0, 'lee'), (1, 'jae'), (2, 'won')] for idx, val in enumerate(a): print(idx, val) ## 0 lee ## 1 jae ## 2 won
✔️ 코딩테스트의 디버거 수단
ex.
print('A1', 'B2') ## A1 B2 print('A1', 'B2', sep='.') ## A1,B2 (sep property) print('A1', end=' ') print('B2') ## A1 B2 (end property) print('{0}: {1}'.format(idx+1, fruit)) ## 2: apple print('{}: {}'.format(idx+1, fruit)) ## 2: apple (괄호안 인덱스 생략가능) print(f'{idx+1}: {fruit}') ## 2: apple (f-string은 3.6+에서만 지원)
✔️ locals()는 로컬에 선언된 모든 변수를 조회할 수 있는 강력한 명령어로, 디버깅에 많은 도움이 된다.
✔️ 특히 로컬 스코프에 제한해 정보를 조회할 수 있기 때문에 클래스의 특정 메소드 내부에서나 함수 내부의 로컬 정보를 조회해 잘못 선언한 부분이 없는지 확인하는 용도로 활용할 수 있다.
ex.
import pprint pprint.pprint(locals()) ## pprint로 출력하게 되면 보기 좋게 줄바꿈 처리를 해준다. { 'nums': [2, 7, 11, 15], 'pprint': <module 'pprint' from ....> 'self': <__main__.Solution object ....> 'target': 9 }
if len(users) == 0
이것보다 if not users
가 낫다는 말)파이썬의 철학을 따라가면서 알고리즘 문제를 풀어보자!!!!