강의 고봉밥 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
)에서 요소의 개수를 세줌. 카운터 간의 연산도 가능
왜 중요하냐! → 코드 스타일의 통일성, 협업
프로그래머스에서 다른 분들의 코드를 보면 list comprehension
을 적극적으로 사용하는 분들을 많이 봤다. 극단적인 케이스가 많지만, 적당히 쓰면 효율적일 것이다.
지금까지 내가 사용하지 않았던 방법만 정리해보려 한다.
lambda, map, reduce
과연 익혀둬야할까,,? 라는 의문이 들었던 부분이다.
function
과 list comprehension
으로 충분히 대체가 가능해보이고,
더 직관적으로 표현할 수 있다고 생각한다. 공식문서에서도 지양한다고 한다.
하지만,,! 아직은 사용된 코드들이 있어서 개념은 알고 넘어가도록 했다.
iterator
iterable object
는 Linked 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 할 수 있다,,! 신기
포인터 개념처럼 값에 접근한다고 이해했다.
빵틀과 빵
Class
를 설계할 땐 method
와 variable
을 미리 설계하는 class scheme
을 짜고 시작하면 좋을 것 같다.private 변수 선언
변수 앞에 __
를 붙여 외부로부터의 직접적인 접근을 막을 수 있다.
class MyClass():
def __init__(self):
self.__data = []
JAVA
의 setter
와 getter
처럼 method를 따로 구현해서 접근하도록 하면 데이터를 보호할 수 있다.
파라미터
로 사용이 가능하고 함수 내에 내재함수
를 넣을 수 있다!os.path.join
왜 굳이 이걸 쓰나 싶었는데, 윈도우와 리눅스에서 디렉토리를 구분하는 방법이 다르기 때문에 실행 환경에 맞춰서 경로를 설정해주는 것이었다,,!
그리고 요새는 pathlib
을 사용해서 파일 경로를 객체로 다루는 것도 알았다.
pickle
대회 준비를 하면서 pickle
을 사용하는 코드를 종종 본 적이 있는데, 파이썬의 객체를 영속화해주는 라이브러리였다. 프로그램이 종료되면 사라지는 객체를 따로 저장
을 해뒀다가, 필요할 때 불러오는 느낌이었다.
심지어 클래스도 저장이 된다니,,! 이게 무슨 일이람
늘 어려웠고 쓸 때마다 검색했는데,, 여전히 그럴 것 같긴 하다^_^
정규식을 직접 눈으로 보며 확인할 수 있는 사이트가 있는건 처음 알았다! 필요할 때 테스트해보며 찾아야겠다.
보통 크롬드라이버와 셀레늄으로 웹에서 정보를 가져오곤 했는데, html 소스에서 정규식으로도 정보를 가져올 수 있단걸 처음 알았다. 셀레늄 막히면 시도해봐야지
Numerical Python의 약자란걸 처음 알았던 것
역시 기능들이 너무 많다 ,,!
다차원 배열을 다룰 때 효율적인 것 같은데, 어떤 기능들이 있는지 알아보는 정도로 강의를 들었고, 정확한 사용법은 직접 써보면서 익힐 것 같다.
신기했던건, all
과 any
를 통해 조건문을 만들 수 있다는 것!
array
간의 비교 연산에도 적용이 된다.
서두르지 말고,
한 발짝씩 나아가기