[Boostcamp] Day 2. 강의 ALL DAY

Jaeyeon Kim·2023년 3월 7일
1

Naver Boostcamp AI Tech

목록 보기
3/29

강의 고봉밥 1주차,,!!!

오늘도 기억해야할 내용들이 꽤나 많은 것 같다.

오늘 배워간 것

자료구조

역시 파이썬은 유용한 자료구조가 많다!

key: 어떤 항목을 구분 지을 수 있는 고유한 데이터

기술 면접에서 '이게 뭔지 설명해라' 하는 질문들이 많은 것 같아,
기본 개념부터 착실히 잡으려고 한다.

Sorting key

def getKey(dict_element):
	return dict_element[1]

sorted_dict = sorted(dictlist, key=getKey, reverse=True)

보통 람다 함수로 key를 정했는데 저런 방법도 있었다,,! 밖에서 함수를 정의하고 넣어도 된다.
더 깔끔해보이는군

deque
신기한 친구. Linked List 기반의 자료구조. 리스트보다 효율적이다!

주피터노트북 %timeit
반복을 통해서 코드 실행 시간을 측정해준다. 매번 import time 으로 시간을 측정했는데, 시간 측정하기에 엄청 효율적일 것 같다.

defaultdict
다른 사람들 코드 볼 때 가끔 보였는데, 키 값이 없으면 기본값을 내보낸다. 예외 처리하기에 좋고, 문장에서 특정 단어의 개수를 세거나 할 때 유용할듯 하다.

Counter
시퀀스 타입의 데이터(ex. String, List)에서 요소의 개수를 세줌. 카운터 간의 연산도 가능

Pythonic code

왜 중요하냐! → 코드 스타일의 통일성, 협업

프로그래머스에서 다른 분들의 코드를 보면 list comprehension을 적극적으로 사용하는 분들을 많이 봤다. 극단적인 케이스가 많지만, 적당히 쓰면 효율적일 것이다.

지금까지 내가 사용하지 않았던 방법만 정리해보려 한다.

lambda, map, reduce
과연 익혀둬야할까,,? 라는 의문이 들었던 부분이다.
functionlist comprehension으로 충분히 대체가 가능해보이고,
더 직관적으로 표현할 수 있다고 생각한다. 공식문서에서도 지양한다고 한다.
하지만,,! 아직은 사용된 코드들이 있어서 개념은 알고 넘어가도록 했다.

iterator
iterable objectLinked List 같은 느낌이었다.
다음 요소의 메모리 주소를 가지고 있다는 점이 같았고, next()로 순회를 했다.

generator
사용자가 요소를 사용하는 시점에서 값을 반환한다.
메모리 사용 측면에서 효율적이다 라고 이해한 라이브러리다.

def my_generator(values):
	my_list = []
    for value in values:
    	yield value

이런 식으로 사용하는데, lazy loading 과 개념이 닮아있어 효율적이겠다고 생각했다.

my_generator = (value for value in values)

위처럼 comprehension 방식으로도 사용할 수 있다.
PS할 때 효율성 테스트에서 유용할듯 싶다.

variable-length
*args : 가변인자, tuple
**kwargs : 키워드 가변인자, dict
순서도 유의해야한다!

asterisk
* : iterable object를 unpacking 할 수 있다,,! 신기
포인터 개념처럼 값에 접근한다고 이해했다.

OOP

빵틀과 빵

  • Class를 설계할 땐 methodvariable을 미리 설계하는 class scheme을 짜고 시작하면 좋을 것 같다.

private 변수 선언
변수 앞에 __를 붙여 외부로부터의 직접적인 접근을 막을 수 있다.

class MyClass():
	def __init__(self):
    	self.__data = []

JAVAsettergetter처럼 method를 따로 구현해서 접근하도록 하면 데이터를 보호할 수 있다.

  • 함수도 파라미터로 사용이 가능하고 함수 내에 내재함수를 넣을 수 있다!

File

os.path.join
왜 굳이 이걸 쓰나 싶었는데, 윈도우와 리눅스에서 디렉토리를 구분하는 방법이 다르기 때문에 실행 환경에 맞춰서 경로를 설정해주는 것이었다,,!
그리고 요새는 pathlib을 사용해서 파일 경로를 객체로 다루는 것도 알았다.

pickle
대회 준비를 하면서 pickle을 사용하는 코드를 종종 본 적이 있는데, 파이썬의 객체를 영속화해주는 라이브러리였다. 프로그램이 종료되면 사라지는 객체를 따로 저장을 해뒀다가, 필요할 때 불러오는 느낌이었다.
심지어 클래스도 저장이 된다니,,! 이게 무슨 일이람

정규식

늘 어려웠고 쓸 때마다 검색했는데,, 여전히 그럴 것 같긴 하다^_^

정규식을 직접 눈으로 보며 확인할 수 있는 사이트가 있는건 처음 알았다! 필요할 때 테스트해보며 찾아야겠다.

보통 크롬드라이버와 셀레늄으로 웹에서 정보를 가져오곤 했는데, html 소스에서 정규식으로도 정보를 가져올 수 있단걸 처음 알았다. 셀레늄 막히면 시도해봐야지

Numpy

Numerical Python의 약자란걸 처음 알았던 것

역시 기능들이 너무 많다 ,,!
다차원 배열을 다룰 때 효율적인 것 같은데, 어떤 기능들이 있는지 알아보는 정도로 강의를 들었고, 정확한 사용법은 직접 써보면서 익힐 것 같다.

신기했던건, allany를 통해 조건문을 만들 수 있다는 것!
array간의 비교 연산에도 적용이 된다.


서두르지 말고,
한 발짝씩 나아가기

profile
낭만과 열정으로 뭉친 개발자 🔥

0개의 댓글